Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Explorer / Internet Explorer (https://www.delphipraxis.net/26181-explorer-internet-explorer.html)

ChrisM 20. Jul 2004 14:09

Re: Explorer / Internet Explorer
 
Zitat:

Zitat von Spider
Hi Evian,


und was ist wenn jemand den Arbeitsplatz öffnet?

Was soll dann sein? Der Arbeitsplatz ist doch ein ganz normales Explorer-Fenster mit deaktivierter Seitenleiste.

alcaeus 20. Jul 2004 14:10

Re: Explorer / Internet Explorer
 
Zitat:

Zitat von Evian
Also ich bin für alle Ideen offen, aber glaube fast langsam... dass es so nicht 100 Pro zu lösen ist.

Doch, ist es. Über die Ausführen-Box können Benutzer keine Dateien löschen, sie können allerdings mit dem Editor eine Batchdatei irgendwo erstellen und diese Ausführen. Wenn du die WindowClass und den WindowTitle der Ausführen-Box kennst, dann kannst du diese ja einfach schließen, sobald sie geöffnet wird.
Weiters könntest du auch nur die Schreibrechte auf den Windows-Ordner entfernen, aber ich weiß nicht inwiefern dies unter Win98 möglich ist...

Greetz
alcaeus

Kernel32.DLL 20. Jul 2004 14:21

Re: Explorer / Internet Explorer
 
Hmm...

Es ist sicher eine Frage des Geldes, aber für öffentliche Einrichtungen würde ich immer einen PC-Wächter auf Hardwarebasis empfehlen

Evian 20. Jul 2004 14:23

Re: Explorer / Internet Explorer
 
naja ich werd noch ein bissel rumprobieren und dann Posten, wenn ich weitergekommen bin.

Auf jeden Fall Danke, für die Hilfe @all.

Reddog 20. Jul 2004 15:10

Re: Explorer / Internet Explorer
 
Ich hätte da eine Frage dazu:

Wie schließt du eigentlich die Fenster? Bei mir klappt es nähmlich weder mit DestroyWindow noch mit SendMessage(HWND, WM_DESTROY, 0, 0). :(

Reddog

EDIT: OK, hat sich erledigt, klappt wunderbar mit PostMessage(HWND, WM_CLOSE, 0, 0). :)

memphis 20. Jul 2004 17:12

Re: Explorer / Internet Explorer
 
Ich wollte damit eigentlich nur sagen, dass man durch die Adressleiste noch bspw. auf die cmd.exe, also Dos-Box zugreifen kann, und einem somit wieder alle Toffen stehen.

Man könnte auch dieses Fenster wieder schließen...

MfG
Luki

Evian 20. Jul 2004 18:05

Re: Explorer / Internet Explorer
 
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.

:dp:

MFG

Evian


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 Uhr.
Seite 2 von 2     12   

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