Ich suche eine Möglichkeit zu überprüfen, ob der Internet Explorer geöffnet ist
und wenn ja ihn zu schließen. Also quasi zu verbieten, das man den IE zum Serven
nutzen kann.
Derzeit mach ich das so:
Code:
procedure Tform1.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
GetWindowThreadProcessID(hWindowHandle, @hprocessID);
if hprocessID <> 0 then
begin
processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
False, hprocessID);
if processHandle <> 0 then
begin
TerminateProcess(processHandle, 0);
CloseHandle(ProcessHandle);
end;
end;
end;
end;
procedure TForm1.IEBeenden;
var
ShellWindow: IShellWindows;
WB: IWebbrowser2;
spDisp: IDispatch;
IDoc1: IHTMLDocument2;
k: Integer;
begin
ShellWindow := CoShellWindows.Create;
for k := 0 to ShellWindow.Count do
begin
spDisp := ShellWindow.Item(k);
if spDisp = nil then Continue;
spDisp.QueryInterface(iWebBrowser2, WB);
if WB <> nil then
begin
WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
if iDoc1 <> nil then
begin
KillProcess(wb.HWND);
end;
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
IF xzeit = 0 THEN
IEBeenden;
end;
Das funktioniert auch ganz gut, aber frist bestimmt ne Menge Ressourcen.
Hätte da noch jemand eine Bessere Idee?!
gruß
Evian