Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

Evian 19. Jul 2004 19:32


Explorer / Internet Explorer
 
Hallo Zusammen,

ich habe eine kleine Benutzeroberfläche für das Multimedia Center in dem ich arbeite geschrieben, die soweit auch ganz gut funktioniert. Es wird z.B. überprüft, ob ein Explorerfenster geöffnet ist und wenn, dann wird es gleich wieder geschlossen. So will ich unter win98, ohne großen Aufwand verhindern, dass jemand am System rumspielt. Die Leute sollen aber den Internet Explorer benutzen können... soweit auch kein Problem, denn die klasse des IE ist 'IEFrame' und die des Explorers ist 'ExploreWClass' bzw.
'CabinetWClass' und so schließe ich einfach immer nur den Explorer, wenn er halt geöffnet wird.

Nun kommt mein Problem, wenn ich z.B. in den Internet Explorer 'c:' eingebe, dann wird der quasi zum Explorer, behält aber die Klasse des Internet Explorers. Nun habe ich mir gedacht, da sich auf jedem Explorer ein 'SysListView32' befindet, kann ich darüber rausfinden, ob jemand den IE zum navigieren im System benutzt.

Aber leider fehlt mir da die nötige Kenntnis...,
weiß jemand, wie ich den IE überprüfe ob er ein 'SysListView32' in sich hat?!

MFG

Evian

Christian Seehase 19. Jul 2004 20:31

Re: Explorer / Internet Explorer
 
Moin Evian,

such' hier mal nach Hier im Forum suchenEnumWindows bzw. Hier im Forum suchenEnumChildWindows

Ein Programm, dass solche Scherze veranstaltet, wie es das Deine tun soll, flöge allerdings bei mir sofort wieder runter. :stupid:

Luckie 19. Jul 2004 20:33

Re: Explorer / Internet Explorer
 
Dein Rechner wird wahrscheinlich auch nicht an einer öffentlichen Bushaltestelle stehen. ;)

Evian 19. Jul 2004 20:56

Re: Explorer / Internet Explorer
 
Zitat:

Zitat von Christian Seehase
Moin Evian,

such' hier mal nach Hier im Forum suchenEnumWindows bzw. Hier im Forum suchenEnumChildWindows

Ein Programm, dass solche Scherze veranstaltet, wie es das Deine tun soll, flöge allerdings bei mir sofort wieder runter. :stupid:


Ja Danke, ich werds mir mal anschauen.


Zitat:

Zitat von Christian Seehase
Ein Programm, dass solche Scherze veranstaltet, wie es das Deine tun soll, flöge allerdings bei mir sofort wieder runter. :stupid:

Das Multimedia Center liegt im Plattengetto von Berlin und hier sind des Öfteren ein paar Gestalten, die aus Spaß einfach mal im Windows Ordner rumlöschen. Da kommt man mit der Weile schon auf ein paar krassere Ideen. Gut wir haben zwar ein Image-Tool, mit dem wir einen "Quasi-Urzustand" wiederherstellen können, aber das ist immer Mehraufwand für den Admin. Zudem haben wir windows98 und trotz dem wir die Rechner mit TweakUI und anderen Möglichkeiten zugenäht haben, ist das System immer noch löchriger als ein Schweizer Käse.
Meiner Meinung nach ist die Idee, den Explorer zu verbieten, zumindest für diese sEinsatzgebiet gar nicht so schlecht, zumal wir sowieso eine Benutzeroberfläche haben.

Reddog 20. Jul 2004 00:05

SearchSysListView - Funktion
 
Ich hab mir mal zu diesem Thema Gedanken gemacht und mal eine Funktion geschrieben. Vielleicht ist sie sogar nützlich:

Delphi-Quellcode:
function SearchSysListView(HWND: THandle): THandle;
var
  return: THandle;
  ClassName: string;
  count: integer;
const
  MaxClassLength = 256;
begin
  Result:= 0;

  // Die Klasse des Fensters wird ermittelt
  SetLength(ClassName, MaxClassLength);
  count:= GetClassName(HWND, PChar(ClassName), MaxClassLength);
  If count = 0 then
    RaiseLastOSError;
  SetLength(ClassName, count);

  // Falls das Fenster schon die Klasse besitzt wird das Handle zurückgegeben
  If ClassName = 'SysListView32' then begin
    Result:= HWND;
    Exit;
  end;

  // wenn die Klasse nicht SysListView32 ist dann folgen rekursive Aufrufe
  // der Funktion mit den Handles aller Kinder des Fensters
  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;
Sie macht alle Kinder des Fensters mit dem angegebenem Handle durch nach einem Fenster mit der Klasse "SysListView32". Wenn sie es findet, dann gibt die Funktion das Handle zurück, andernfalls gibt sie 0 zurück.
Wenn der Code schreckliche Fehler enthält, dann bitte nicht böse sein, ich bin noch Anfänger :oops:

Ciao, Reddog.

Evian 20. Jul 2004 12:19

Re: Explorer / Internet Explorer
 
Wow Super, Danke!

Also ich habs jetzt noch nicht getestet, aber es sieht sehr gut aus, ich denke wenn es noch Fehlerchen gibt, dann werde ich sie selber hinbekommen, aber echt klasse!

Da nehm ich den Code von Dir "Anfänger"(glaube Du hast aber das falsche Wort gewählt) 1000x mal lieber, als irgendwo im Internet was "Besseres" zu finden.

Wenns funzt, dann sag ich nochmal bescheid!

Die Muhkuh 20. Jul 2004 12:26

Re: Explorer / Internet Explorer
 
Hi Evian,


und was ist wenn jemand den Arbeitsplatz öffnet?

memphis 20. Jul 2004 13:24

Re: Explorer / Internet Explorer
 
nur auf ein SysListView32 zu überprüfen reicht meiner Meinung nicht aus, denn der Benutzer kann immer noch Dateien direkt über die Adressleiste starten. Auch wenn er nicht die kompletten Pfadangaben weiss, kann er mit Hilfe der Autovervollständigung durch die Verzeichnisse navigieren.

MfG

Luki

alcaeus 20. Jul 2004 14:03

Re: Explorer / Internet Explorer
 
Zitat:

Zitat von "Evian
hier sind des Öfteren ein paar Gestalten, die aus Spaß einfach mal im Windows Ordner rumlöschen.

Ich glaube das beseitigt das problem von Memphis, aber sicherheitshalber würde ich auch das "Ausführen" im Startmenü unterbinden.

Greetz
alcaeus

Evian 20. Jul 2004 14:06

Re: Explorer / Internet Explorer
 
mh... stimmt... :roll:

naja also der Explorer, sofern er ein SysListView32 enthält, wird geschlossen... aber der Zugriff auf Dateien ist damitt nicht unterbunden.

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

*schnief*

Evian

---Edit----
Zitat:

Zitat von alcaeus
Ich glaube das beseitigt das problem von Memphis, aber sicherheitshalber würde ich auch das "Ausführen" im Startmenü unterbinden.

Greetz
alcaeus

Also das Startmenü kann gar nicht aufgerufen werden, Windows Tasten und Shortcuts sind gesperrt... und letztendlich ist sogar der gesammte Desktop + Taskbar gehidet und unenabled.

Aber was meinst Du mit "das problem von Memphis"?
---Edit----


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.
Seite 1 von 2  1 2      

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