Executer un Programme en l'attachant a un processus

cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006 - 22 avril 2005 à 16:55
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006 - 18 mai 2005 à 10:16
Salut j'aimerais savoir comment executer un programme en l'attachant a un
processus ?

13 réponses

davidfdm2002 Messages postés 14 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 21 mai 2006
22 avril 2005 à 17:24
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
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
22 avril 2005 à 20:59
... ok j'vais essayer de faire quelque chose avec ça

mais en passant comment qu'on fait pour que notre programme soit considéré
comme un service?
0
davidfdm2002 Messages postés 14 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 21 mai 2006
23 avril 2005 à 00:55
bon, mais juste en passant alors...
Aulieu de crrer un projet de base style application, tu cré un projet service, cela te cré un objet de type Tservice.
Ensuite tu implement la fonction onExecute, ou OnStrat/onBegin dans le cas d'utilisation d'un Tread. tu compile ton programme et voila. Il existe un excelent exemple Delphi sur ce site, qui m'a permit de faire egalement mes premieres armes a ce sujet. Juste fait une recherche sur Service Windows , et tu trouvera :)
voila.
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
23 avril 2005 à 22:37
ok merci

mais le code que tu ma donner ne fait qu'exécuter un programme ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
24 avril 2005 à 05:25
ee jveux juste etre sur qu'on parle de la meme chose :

pour moi un service c un programme qui est considéré comme un programme systeme par windows ?
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
24 avril 2005 à 05:26
J'ai chercher des info sur createProcess mais j'ai pas trouvé comment l'utilisé pour executer un programme en l'attachant a un processus
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
24 avril 2005 à 05:39
J'ai chercher encore et ca me semble bcp + compliqué que ca attacher un programme a un processus
Il faut que mon programme soit considérer comment un débuggueur et ensuite je peux utiliser la fonction :

function DebugActiveProcess (dwProcessId: DWORD): BOOL
0
davidfdm2002 Messages postés 14 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 21 mai 2006
3 mai 2005 à 17:43
désolé pour la reponse...

woui un service est bien un programme systeme.
Tu créé ton service en delphi (delphi 6 pour moi...) , cela te cré un exe..
en ligne de commande tu ecrit
monexe.exe /install
et ca te l'installe entant que service windows.
Poour le desinstaller tu retape
monexe.exe /uninstall

Voila..
Sinon je comprend pas du tout ce que tu veux faire avec le debuggage...
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
11 mai 2005 à 03:30
merci c exactment ca que je voulais savoir
mais c ou que j'entre ces commande?
0
davidfdm2002 Messages postés 14 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 21 mai 2006
16 mai 2005 à 22:36
désolé encore pour la reponse tardive.
C'est simple depuis une fenetre Dos.
Demarrer->executer->cmd
et dans le fenetre DOS se placer dans le repertoir (c'est plus simple ).
cd c:\repertoire\monservice
et donc taper monservice.exe /install
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
17 mai 2005 à 19:17
ok, merci

mais maintenant, si je veux que mon service s'installe automatiquement.
par exemple si je me créer un petit programme qui copira le services a un endroix X, quesce q'il faut que je fasse ensuite pour installer ce service?

j'ai essayer :

Windows.WinExec('cd ' + ExtractFilePath(Application.ExeName);
Windows.WinExec(ExtractFileName(Application.ExeName) + ' /install')

mais ca ne marche pas
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
18 mai 2005 à 09:14
j'ai été voir la source, mais je n'ai pas vue qu'elle installait sont services.
commment est ce que shellexecute fonctionne pour installer un service?
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
18 mai 2005 à 10:16
eee ca parle pas de shellexecute
met de net start nonservice.exe
ben comment je me sert de ca?
0
Rejoignez-nous