Moi je suis enplein dedans pour un service...
Dans la pratique pour lancer un programme depuis un autre il suffit d'utiliser createprocess..
Voici un petit morceau de code recuperé de ci de la sur le web. Avec ça tu pourra facilement trouver les autres elements necessaires.
En esperant que cela t'aide, bonne continuation :)
Var StartInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
Fin : Boolean;
Fichier : String;
StdOutFile : THandle;
SecurityAttr : TSecurityAttributes;
Lus : Cardinal;
Bloc : PChar;
Long : Cardinal;
Programme : String;
Repertoire :String;
Result:String;
begin
;
programme:=' notepad.exe;
}
FillChar (SecurityAttr, SizeOf(SecurityAttr), #0);
SecurityAttr.nLength := SizeOf (SecurityAttr);
SecurityAttr.lpSecurityDescriptor := Nil;
SecurityAttr.bInheritHandle := FALSE;
Try
{ Mise à zéro de la structure StartInfo }
FillChar(StartInfo,SizeOf(StartInfo),#0);
StartInfo.cb := SizeOf(StartInfo);
If CreateProcess(Nil, PChar(programme), Nil, nil, false,0, Nil, nil, StartInfo,ProcessInfo) Then
Begin
{ ProcessInfo.hProcess contient le handle du process principal de l'application }
Fin:=False;
Repeat
{ On attend la fin de l'application }
Case WaitForSingleObject(ProcessInfo.hProcess, 200)Of
WAIT_OBJECT_0 :Fin:=True; { L'application est terminée, on sort }
WAIT_TIMEOUT :; { elle n'est pas terminée, on continue d'attendre }
End;
{ Mise à jour de la fenêtre pour que l'application ne paraisse pas bloquée. }
Application.ProcessMessages;
Until Fin;
{ C'est fini }
End
Else RaiseLastOSError;
Finally