Classe TService :Application Service et lancement d'executable

zorg724 Messages postés 6 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 3 décembre 2007 - 20 août 2004 à 10:51
zorg724 Messages postés 6 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 3 décembre 2007 - 10 sept. 2004 à 22:59
Bonjour,
j'ai créé un service window (programme qui tourne en tache de fond- icone 'service' dans le menu nouveau->application sous delphi : Classe TService).
A un moment donné, j'arrive tres bien à lancer des executables qui n'ont pas de fenetre.
Par contre, quand je fais une createProcessus ou shellexec sur des executables qui ont une fenetre, ils sont lancés (leur thread apparait dans la liste des processus) mais ne s'executent pas.

voici le code que j'utilise pour lancer les processus:

var
Si : STARTUPINFO;
Pi : PROCESS_INFORMATION;
theCommandeLine : string;
begin
Result := True;
// init processus
ZeroMemory (@Si,sizeof(STARTUPINFO));
Si.dwFlags := STARTF_USESHOWWINDOW;
Si.wShowWindow := SW_SHOWNORMAL;
// creation de la ligne de commande : executable + parametre
theCommandeLine := ACompleteFilename + ' ' + CommandLine;

// lancement du processus: si erreur, result = False
if not CreateProcess(nil,PChar(theCommandeLine),nil,nil,True,0,nil,nil,Si,Pi) then
begin
Result := False;
end else begin
//Attente fin du processus
WaitForSingleObject(Pi.hProcess,INFINITE);

OU BIEN :

Error_code := ShellExecute(0,
'open',
PChar(FProgramToLaunchWhenFinished),
PChar (FParametersOfProgramToLaunchWhenFinished),
PChar(FProgramToLaunchDirectory),
SW_SHOWNORMAL); //

Comment faire.
Merci

2 réponses

cs_maxibug Messages postés 1 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 8 septembre 2004
8 sept. 2004 à 19:03
Bonjour,

J'ai exactement le même problème. Y a t il une solution ?

Merci
0
zorg724 Messages postés 6 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 3 décembre 2007
10 sept. 2004 à 22:59
Oui, en fait c est tres simple: il suffit de selectionner la propriete de l'objet TService : interactive : la mettre à True: on peut ainsi lancer des applications qui ont un handle.
zorg.
0
Rejoignez-nous