Ok, funzt eigendlich ganz gut und verbraucht weit weniger Ressourcen, als ich angenommen hätte... also läuft auf nem Pentium II 266, ohne, dass man irgendwas merkt.
Um zu überprüfen ob der IE zum Browsen im System genutzt wird, benutze ich in etwa volgenden Code:
Code:
Procedure CloseAllIE2Sys;
VAR
HWND1, HWND2 : THandle;
begin
while FindWindow('IEFrame',nil)<>0 do
BEGIN
HWND1 := FindWindow('IEFrame',nil);
HWND2 := HWND1;
IF SearchSysListView(HWND1) <> 0 THEN
SendMessage(HWND2,WM_Syscommand,SC_Close,0);
END;
end;
function Tform1.SearchSysListView(HWND : THandle): THandle;
var
return: THandle;
ClassName: string;
count: integer;
const
MaxClassLength = 256;
begin
Result:= 0;
application.ProcessMessages;
SetLength(ClassName, MaxClassLength);
count:= GetClassName(HWND, PChar(ClassName), MaxClassLength);
If count = 0 then
Exit;
SetLength(ClassName, count);
If ClassName = 'SysListView32' then begin
Result:= HWND;
Exit;
end;
return:=GetTopWindow(HWND);
If return <> 0 then begin
while (return <> 0) and (Result = 0) do begin
Result:= SearchSysListView(return);
return:= GetNextWindow(return, GW_HWNDNEXT);
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
CloseAllIE2Sys;
end;
Um andere Programme zu beenden, die die Benutzer nicht nutzen können sollen, nehm ich folgenden Code, wobei für Klassenname natürlich der entsprechende Wert für das Programm eingegeben werden muss:
Code:
while FindWindow('Klassenname',nil)<>0 do
BEGIN
SendMessage(FindWindow('Klassenname',nil),WM_Syscommand,SC_Close,0);
Application.ProcessMessages;
END;
Um den Klassenname rauszubekommen, eignet sich das Freeware Programm X-Spy ausgezeichnet.
Man kann es bei
motzi.fs-tools.de downloaden.
Also großes Danke noch mal an Reddog, der die Arbeit gemacht hat, die eigendlich meine Aufgabe gewesen wäre und an alle anderen, die mir nen Tip gegeben haben natürlich auch.
MFG
Evian