![]() |
Explorer.EXE erzeugen und auf eigene Form verankern
Hallo,
ich mochte eine Instanz des MS-Explorers erzeugen (mit createProcess oder ä.) und diese dann in ein Panel oder eine Form einbetten. Die Form soll sozusagen der Parent vom Explorer sein. Ist das möglich? Danke, Armin |
Re: Explorer.EXE erzeugen und auf eigene Form verankern
Hi Armin,
ich weiß nicht ob das möglich ist. Aber wenn du nicht nonVCL programmierst, solltest du dir die TShellListView und TShellTreeView Komponenten suchen. Diese "implementieren" ein Explorer-Fenster. Wenn ich mich nicht ganz täusche dann findest du die beiden Komponenten auf der Beispiele-Palette. Greetz alcaeus |
Re: Explorer.EXE erzeugen und auf eigene Form verankern
Hallo Andreas,
ich kenne diese Kompos, aber leider nach einem kurzen Test bekam ich aus unbekannten Gründen immer eine Exception die für mich nicht nachvollziehbar ist. Daher möchte ich den "echten" Explorer benutzen. [EDIT] Habe gerade einen Patch gefunden: ![]() Ich möchte es aber trotzdem weiterhin mit dem "echten" Explorer versuchen :-) [/EDIT] |
Re: Explorer.EXE erzeugen und auf eigene Form verankern
Ich kenne jemanden der das auch machen wollte, aber dann mit der Zeit festgestellt hat, das wo was nicht möglich ist. So war jedenfalls seine Meinung
Gruß PhilGo |
Re: Explorer.EXE erzeugen und auf eigene Form verankern
Oder einfach TWebBrowser nehmen:
Delphi-Quellcode:
um den Inhalt des Laufwerks C anzusehen.
WebBrowser.Navigate('C:\')
Und die Doppelklicks bekommst Du mittels OnBeforeNavigate2 auch mit (vermutlich auch noch ein paar andere Dinge). |
Re: Explorer.EXE erzeugen und auf eigene Form verankern
Hiho!
Ich habe mit TShellTreeView & Co auch eher schlechte Erfahrungen gemacht (unter D6). Besonders wenn man mehrere TShell- Objekte in einem Formular einsetzt, kracht es häufig mal. Eine Alternative, mit der ich bisher ganz gut gefahren bin, sind die ![]() Sind zwar auch nicht mehr wirklich "state of the art", aber ganz brauchbar. |
Re: Explorer.EXE erzeugen und auf eigene Form verankern
Tja,
vielen Dank für die externen Kompos Leute, aber die kenne ich alle schon und helfen mir nicht weiter. Ich möchte bloß den MS-Explorer auf eine Delphi-Form "kleben". :wall: |
Re: Explorer.EXE erzeugen und auf eigene Form verankern
Starte z.B mit CreateProcess Explorer.Exe.
Dann suchst du mit der FindWindow API nach der "ExploreWClass" Klasse. (Aufpassen: Es könnten merhere Explorer Instanzen vorhanden sein) Mit Windows.SetParent() kannst du dann das Explorer Fenster auf deine Form bringen. |
Re: Explorer.EXE erzeugen und auf eigene Form verankern
Hallo Toms,
so ähnlich habe ich mir das auch gedacht, aber mit
Delphi-Quellcode:
setze ich den
Windows.SetParent()
Explorer als Parent von meiner Form (denke ich mal). Ich möchte aber, dass die Form der Parent des Explorers ist. :gruebel: |
Re: Explorer.EXE erzeugen und auf eigene Form verankern
Hallo Toms,
danke noch einmal für Deine Idee! Da ich mehr gegoogelt habe um eine Lösung zu finden, als mich Deinen Tips zu widmen hat es lange gedauert, bis ich kapierte, dass eh alles unter meiner Nase ist! :wall: Für Alle die es auch interessiert, ein kleines Q&D Beispiel:
Delphi-Quellcode:
PROCEDURE TForm1.Button1Click(Sender: TObject);
// Hierbei wird der Windows-Taschenrechner einem Panel als Childfenster zugeordnet // FUNCTION GetHandleFromWindowTitle(TitleText: STRING): hWnd; VAR StrBuf : ARRAY[0..$FF] OF Char; BEGIN Result := FindWindow(PChar(0), StrPCopy(StrBuf, TitleText)); END; VAR aWindowH : hWnd; BEGIN IF ShellExecute(0, 'open', 'calc.exe', NIL, NIL, SW_SHOW) > 32 THEN BEGIN // Warten, bis Rechner sichtbar ist Sleep(1000); aWindowH := GetHandleFromWindowTitle('Rechner'); // Rechner in Panel einbetten Windows.SetParent(aWindowH, Panel1.Handle); END; END; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
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