![]() |
Prozess ohne Nachfrage beenden
Hallo,
ich habe nun gefühlte 10.000 Lösungen und Thread gelesen, die leider ALLE auf TerminateThread aufbauen. Dumm ist leider, dass das Programm, welches ich beenden möchte, darauf nur mit einem "Möchten Sie das Programm wirklich schließen?" antwortet. Also, gibt es einen -einfachen- weg, das Programm zu schließen? Handle bekannt. Danke |
Re: Prozess ohne Nachfrage beenden
Wenn du den Prozess mit
![]() |
Re: Prozess ohne Nachfrage beenden
Zitat:
Delphi-Quellcode:
Diese Funktion greift auf TerminateProcess zurück, right?
procedure KillProcess(hWindowHandle: HWND);
var hprocessID: INTEGER; processHandle: THandle; DWResult: DWORD; begin SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0, SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult); if isWindow(hWindowHandle) then begin { Get the process identifier for the window} GetWindowThreadProcessID(hWindowHandle, @hprocessID); if hprocessID <> 0 then begin { Get the process handle } processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION, False, hprocessID); if processHandle <> 0 then begin { Terminate the process } TerminateProcess(processHandle, 0); CloseHandle(ProcessHandle); end; end; end; end; Und das Programm antwortet mit... "Möchten Sie das Programm wirklich schließen?"... |
Re: Prozess ohne Nachfrage beenden
|
Re: Prozess ohne Nachfrage beenden
Zitat:
Delphi-Quellcode:
Es wird erst versucht das Fenster des Prozesses "normal" zu schliessen. Und das löst natürlich bei manchen Fenstern eine Nachfrage aus.
SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0, SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);
|
Re: Prozess ohne Nachfrage beenden
Danke.
Danke, Danke Danke. |
Re: Prozess ohne Nachfrage beenden
Hallo,
ich bin gerade dabei, meine Projekte auf D2009 umzustellen. Hierbei habe ich Probleme mit der Windows Funktion SendMessageTimeout . :(
Delphi-Quellcode:
Bisher hat dieser Aufruf immer funktioniert. Jetzt meckert der Compiler:
function foo : Boolean;
var wnd: HWND; DWResult: DWORD; begin wnd := FindWindow('irgend ein Windowname',NIL); if wnd <> 0 then if SendMessageTimeout(Wnd, WM_Close, 0, 0, SMTO_NORMAL, 3000, DWResult) = 0 then // ..... end; Zitat:
Zitat:
|
Re: Prozess ohne Nachfrage beenden
ist der letzte Parameter nicht ein pointer?
hast Du es schon so versucht?
Delphi-Quellcode:
if SendMessageTimeout(Wnd, WM_Close, 0, 0, SMTO_NORMAL, 3000, @DWResult) = 0 then
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz