Hallo Zusammen,
ich habe Funktion, die ich zum beenden verschiedener Applikationen verwende. Die Funktion erledigt auch das was ich erwarte und auch mehrfach hintereinander. Sie beendet eine extern Applikation.
Durch Zufall habe ich festgestellt, dass nach dem Aufruf OpenProcess von GetLastError der "Fehler Code: 5 Zugriff verweigert" erkannt wird.
Was hat das zu Sagen? Kann es sein, dass der Fehler von der beendeten externen Applikation kommt?
Danke
Dieter
ich habe Funktion, die ich zum beenden verschiedener Applikationen verwende. Die Funktion erledigt auch das was ich erwarte und auch mehrfach hintereinander. Sie beendet eine extern Applikation.
Durch Zufall habe ich festgestellt, dass nach dem Aufruf OpenProcess von GetLastError der "Fehler Code: 5 Zugriff verweigert" erkannt wird.
Was hat das zu Sagen? Kann es sein, dass der Fehler von der beendeten externen Applikation kommt?
Danke
Dieter
Code:
void __fastcall TOpenCloseApp::CloseExterneApp(TObject *Sender) { HANDLE hProc; int i; for(i = 0; i < AnzahlApp; i++) { if(ApplikationInfo[i].bRunning) { //Prozess öffnen hProc=OpenProcess(PROCESS_TERMINATE|SYNCHRONIZE, false, ApplikationInfo[i].ProzessInfo.dwProcessId); if(hProc==NULL) FehlerBehandlung->TranslateErrorCode( 1, "[TStartAppForm::CloseButtonClick] OpenProcess", ""); //Prozess beenden if(TerminateProcess(hProc,0)) { // Warte 5 Sek. ob die Application beendet wurde. if(WaitForSingleObject(hProc,5000) == WAIT_TIMEOUT) FehlerBehandlung->TranslateErrorCode( 1, "[TStartAppForm::CloseButtonClick] WaitForSingleObject", ""); else { ApplikationInfo[i].bRunning = false; if (OnAppTerminated) OnAppTerminated(this, &ApplikationInfo[i].iKennung); } } else FehlerBehandlung->TranslateErrorCode( 1, "[TStartAppForm::CloseButtonClick] CloseExterneApp", ""); } } // Ende: for(i = 0; i < AnzahlApp; i++) // Es ist keine Applikation aktiv. IndexOfActiveApp = 0; }
Comment