fait :
regarde si il passe par la ligne de code ou essaye de lancer un programme avec WinExec pour voir.Code:path.c_str()
Version imprimable
fait :
regarde si il passe par la ligne de code ou essaye de lancer un programme avec WinExec pour voir.Code:path.c_str()
ShellExecute ne peut lancer que des process executables (.exe). Il ne sait pas lancer un ".bat" ou autre.
==> il faut executer le programme "cmd.exe" (%COMSPEC%), et lui passer en parametre "/C xxxx.bat"
plus d'info sur le forum delphi ---> ICI
peut tu m'en dire plus sur ce (%COMSPEC%) ??Citation:
Envoyé par pseudocode
voila sa marche !!!
c'etais donc ShellExecute(NULL,"OPEN","cmd.exe",path.c_str(),NULL,SW_SHOW);
COOL MERCI !!!!
now une petite question comment on fais pour que le prog attend le temps que mon bat s'install avant de passer a la suite ?
lol. tu vas rire... mais tu ne peux pas avec ShellExecute. Il faut utiliser "CreateProcess()" qui te retourne le PID du process et faire un WaitForSingleObject() sur le handle.Citation:
Envoyé par Freektrax
Je sens que vous allez me demander le code... :roll:
tu te propose si gentillement alors je te le demande :aie:
Ce code est issu de ma bibliotheque personnelle de bordel pour C++Builder, donc n'attendez pas trop de doc ou de commentaire... :mrgreen:
exemple:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 // Return value: Process ID (PID) int RunProcess(char *exename,char *param) { AnsiString strExeName = AnsiString(exename); AnsiString strCmdLine = AnsiString(exename)+" "+AnsiString(param); TStartupInfo StartupInfoHelp; TProcessInformation ProcessInformationHelp; ZeroMemory(&StartupInfoHelp,sizeof(TStartupInfo)); StartupInfoHelp.cb = sizeof(TStartupInfo); StartupInfoHelp.dwFlags = STARTF_USESHOWWINDOW; StartupInfoHelp.wShowWindow = SW_SHOWNORMAL; ZeroMemory(&ProcessInformationHelp,sizeof(TProcessInformation)); CreateProcess( strExeName.c_str(), strCmdLine.c_str() , NULL, NULL, true, 0, NULL, NULL, &StartupInfoHelp, &ProcessInformationHelp); return (int)ProcessInformationHelp.dwProcessId; } bool WaitForProcess(int pid) { HANDLE hProc; hProc=OpenProcess(SYNCHRONIZE,FALSE,pid); if (hProc) { WaitForSingleObject(hProc, INFINITE); CloseHandle(hProc); return true; } return false; }
Code:
1
2
3
4 int iPID; iPID=RunProcess("c:\\winnt\\system32\\calc.exe",""); WaitForProcess(iPID);
peux tu me donner des info sur ton startupinfohelp ??