Witam!
Potrzebuję zamknąc jedno konkretne okno Internet Explorera. Problem jest w tym, ze IE jakoś nie reaguje na WM_CLOSE, natomiast ubijanie go w ten sposób:
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
// PostMessage(hWindowHandle, WM_QUIT, 0, 0);
{ 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;
skutkuje ubiciem całego procesu iexplore.exe. Zamyka to tez inne otwarte w ramach tego procesu okna. Próbowałem w następujący sposób zasymulować Alt+F4 ale jakoś nie chce działać:/
hwn:=FindWindow(nil,'Google - Microsoft Internet Explorer');
PostMessage(hwn,WM_KEYDOWN,VK_MENU,0);
POSTMessage(hwn,WM_KEYDOWN,VK_F4,0);
PostMessage(hwn,WM_KEYUP,VK_MENU,0);
PostMessage(hwn,WM_KEYUP,VK_F4,0);
ale tez nie chce sie zamknąć. Czy ktoś ma jakiś pomyślunek?
Z góry dzięki.