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