009
05.03.2003, 18:48 Uhr
Uli
|
Hallo,
das schicken vom Code geht natürlich. Du könntest ihn dir aber nur anschauen. zum ausführen müssen viele Bedingungen erfüllt sein und das ist nicht mal auf meinem rechner der fall. Ich poste hier einfach mal die Funktion wo die Probeme auftretten.
C++: |
//*************************************************** //* Beenden eines Processes * //*************************************************** bool CHelp::EndProcess(CString ProgToEnd) { CString Hilfe; if(ProgToEnd.Find(' ') != -1) ProgToEnd=ProgToEnd.Left(ProgToEnd.Find(' ')); Hilfe =ProgToEnd.Left(ProgToEnd.ReverseFind('\\')+1); ProgToEnd=ProgToEnd.Right(ProgToEnd.GetLength()-Hilfe.GetLength()); HANDLE SnapShot; HANDLE proc_to_kill; PROCESSENTRY32 ProcessList; ProcessList.dwSize =sizeof (PROCESSENTRY32); SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); if(Process32First(SnapShot, &ProcessList) == FALSE) { Hilfe.Format("%d",GetLastError()); MessageBox(Hilfe); MessageBox("Error reading process list\n"); CloseHandle(SnapShot); return NULL; } do { if(Process32Next(SnapShot, &ProcessList) == FALSE) { if(GetLastError() != ERROR_NO_MORE_FILES) { MessageBox("Error reading process list\n"); CloseHandle(SnapShot); CloseHandle( proc_to_kill ); return NULL; } else { CloseHandle(SnapShot); CloseHandle( proc_to_kill ); return NULL; } } if( ProgToEnd.CompareNoCase(ProcessList.szExeFile)==0) { proc_to_kill = OpenProcess (PROCESS_ALL_ACCESS, FALSE,ProcessList.th32ProcessID ); TerminateProcess(proc_to_kill, 0); // // ExitProcess(proc_to_kill->GetExitCode()); } }while(1);
return NULL; }
|
Der Rechner hängt sich immer nur auf wenn dise Funktion aufgerufen wird.
Bye Uli |