lancer un programme DOS ? [résolu] [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 18-04-2002 à 15:57:49
ShellExecute(0, nil, '232_read.exe', 'import.txt,1,1,1,1,1,1,0', Folder, SW_SHOWNORMAL);
Où Folder contient le dossier par défaut.
Il vaut mieux spéficier le dossier du programme :
À la place de '232_read.exe' mettre PChar(ExtractFilePath(Application.ExeName) + '232_read.exe') si jamais le propramme 232_read est dans le même dossier, par exemple.
Pour voir quand le programme se ferme, je crois qu'il faut faire ça avec CreateProcess. Peut-être qu'il y a moyen avec ShellExecuteEx.
PS: il faudra sans doute ajouter ShellAPI dans les "uses" de la unit.
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 18-04-2002 à 16:12:03
merci, au moins là j'arrive à lire le fichier, le pb c'est qu'il n'attend pas pour continuer mon prog
sur CreateProcess j'ai essayé :
Code :
|
mais ça ne marche pas
mon programme a pas l'air d'être lancé et ça ne me rend jamais la main
[jfdsdjhfuetppo]--Message édité par Aiua--[/jfdsdjhfuetppo]
Marsh Posté le 18-04-2002 à 16:27:54
c'est bon, j'ai trouvé
j'utilise :
Code :
|
et je lui passe en parametre '232_read import.txt,1,1,1,1,1,1,0'
et ça marche
Marsh Posté le 18-04-2002 à 16:34:59
plutôt que d'utiliser les array of char, tu peux faire simplement un PChar(FileName) dans les paramètres, c'est plus pratique (pas besoin de StrPCopy etc...)
Je vais garder ta fonction sous la main, c'est bon à savoir pour si jamais j'en ai besoin
Marsh Posté le 18-04-2002 à 16:37:02
ah ! si tu le dis, j'sais pas moi j'ai repompé la fonction
disons que ça marche comme ça meme si je comprends pas tout
Marsh Posté le 18-04-2002 à 16:42:49
Version allégée:
Code :
|
Marsh Posté le 18-04-2002 à 16:48:09
testé et approuvé
merci
Marsh Posté le 18-04-2002 à 17:06:42
en fait il faut rajouter les CloseHandle à la fin par ce que sinon le prog il continue à tourner en fond, et à 20% du proc en plus le salop
bizarrement à trois en meme temps je m'en suis vite rendu compte que ça ramais
donc la fin c'est en fait :
[code]
begin
WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, code);
Result := Integer(code);
end;
CloseHandle(L_ProcessInfo.hProcess);
CloseHandle(L_ProcessInfo.hThread);
end;
[jfdsdjhfuetppo]--Message édité par Aiua--[/jfdsdjhfuetppo]
Marsh Posté le 18-04-2002 à 15:45:54
Je veux juste lancer automatiquement :
232_read import.txt,1,1,1,1,1,1,0 (232_read.exe étant le programme dos)
ce programme crée un fichier texte et ce ferme, donc je voudrai récuperer la main que qd il a fini de créer son fichier si possible, mais bon déjà le lancer serait pas mal
merci de votre aide
[jfdsdjhfuetppo]--Message édité par Aiua--[/jfdsdjhfuetppo]
---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.