Bonjour, dans mon programme j'ai un shellExecuteEx pour copier un fichier.
j'aimerai pouvoir d�truire ce processus lorsque j'appuie sur un bouton de la toolbar de l'application.
En effet, lorsque l'utilisateur appuie sur le bouton, "bInterrompu" passe � "true". ce qui doit permettre d'effectuer un ExitProcess(0);
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 SHELLEXECUTEINFO sei; ZeroMemory(&sei, sizeof(SHELLEXECUTEINFO)); sei.cbSize = sizeof(SHELLEXECUTEINFO ); sei.lpFile = "xcopy.exe"; sei.fMask = SEE_MASK_NOCLOSEPROCESS; sei.lpVerb = TEXT("open"); sei.nShow = SW_HIDE; CString aa = "\"C:\\temp\\"+prestation+".zip\" \""+theApp.GetStrData()+"\\"+theApp.GetStrUA()+"\\"+prestation+".zip\" /Y"; sei.lpParameters = aa; if(ShellExecuteEx(&sei)) { int pas =0; DWORD result = WaitForSingleObject(sei.hProcess, 1000); while (result == WAIT_TIMEOUT) { if(theApp.bInterrompu==true) { ExitProcess(0); result=WAIT_ABANDONED; } else { pas+=2; if (pas < 175) pFrame->GetStatusBar()->SetPaneProgress(1,pas); result = WaitForSingleObject(sei.hProcess, 1000); } } if(result==WAIT_ABANDONED) pFrame->GetStatusBar()->SetPaneProgress(1,0); else pFrame->GetStatusBar()->SetPaneProgress(1,200); } ::CloseHandle(sei.hProcess);
mon probl�me est que je n'arrive pas � appuyer sur mon bouton..
je pense que c'est parce qu'il y a un "waitforsingleObject", du coup je perds la main sur l'application...
comment je peux faire, pour garder la main (pour pouvoir appuyer sur le bouton)?
sachant que j'ai utilis� "waitforsingleobject" parce que je voulais que mon programme attende que la copie soit totalement finie pour pouvoir continuer...
j'ai trouv� une fonction : GetExitCodeProcess( hProcess, DLPWORD.. ); qui permet de savoir si le processus est toujours actif ou pas... mais est-ce que ca peut vraiment me servir parce que pour l'instant j'arrive pas a l'utiliser pour ce que je veux faire
Partager