Błąd przy zabijaniu procesu

0

Wykonuje "zabicie" procesu exprorera za pomoca kodu:

PROCESSENTRY32 Proces;
LPDWORD kodWyjscia;
this->UchwytProcesu=NULL;
this->UchwytProcesu=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,GetCurrentProcessId());
Proces.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(this->UchwytProcesu,&Proces)==true)
{
do
{
AnsiString sc(Proces.szExeFile);
if(sc.AnsiCompareIC("explorer.exe")==0)
{
HANDLE ps = OpenProcess(PROCESS_ALL_ACCESS,false,Proces.th32ProcessID);
TerminateProcess(ps,-9);
break;
}
}
while(Process32Next(this->UchwytProcesu,&Proces)==true);
}
CloseHandle(this->UchwytProcesu);

Przez kilka sekund efekt jest zamierzony (wszystko znika z pulpitu).Następnie wszytko wraca do stanu wczesniejszego i wyrzucany jest błąd:
System error code 1400
Nieprawidłowe dojscie okna.

Co powoduje wyrzucenie tego błedu?

0

To, że wraca do normy, to prawidłowo, bo explorer.exe jest powłoką systemową. Błąd może wywoływać którykolwiek z programów właśnie uruchomionych. Na przykład środowisko Borlanda: przy Delphi/Builder często pojawia się ten błąd, gdy padnie explorer z dowolnej przyczyny.

0

Temat jest taki ze nie ma to powracac do normy,chyba ze ja bede chcial to cofnac.Gdy wylaczam exprorera za pomoca windows-owego okna procesow(Ctrl+alt+delete) nie ma błedu i efekt jest trwały.Jak to zrobic zeby robil to moj program a efekt byl taki jak przy wykonaniu tego za pomoca okna Ctrl+alt+delete.

1 użytkowników online, w tym zalogowanych: 0, gości: 1