AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Explorer.EXE erzeugen und auf eigene Form verankern
Thema durchsuchen
Ansicht
Themen-Optionen

Explorer.EXE erzeugen und auf eigene Form verankern

Ein Thema von APP · begonnen am 16. Sep 2004 · letzter Beitrag vom 16. Sep 2004
Antwort Antwort
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#1

Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 10:54
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
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 10:56
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 11:33
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: ...verhindern, dass es unter XP eine Zugriffsverletzung mit TListView gibt?

Ich möchte es aber trotzdem weiterhin mit dem "echten" Explorer versuchen
[/EDIT]
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
PhilGo

Registriert seit: 5. Jul 2004
Ort: Schwallungen
54 Beiträge
 
#4

Re: Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 11:41
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 11:52
Oder einfach TWebBrowser nehmen:
WebBrowser.Navigate('C:\') um den Inhalt des Laufwerks C anzusehen.
Und die Doppelklicks bekommst Du mittels OnBeforeNavigate2 auch mit (vermutlich auch noch ein paar andere Dinge).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von writeln
writeln

Registriert seit: 30. Aug 2004
Ort: Hamburg
28 Beiträge
 
#6

Re: Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 13:44
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 Hier im Forum suchenShellShock - Komponenten.
Sind zwar auch nicht mehr wirklich "state of the art", aber ganz brauchbar.
Sascha
...und ich sach noch: "drück nich auf F9"...
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 18:06
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".
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 18:09
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.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 18:25
Hallo Toms,

so ähnlich habe ich mir das auch gedacht, aber
mitWindows.SetParent() setze ich den
Explorer als Parent von meiner Form (denke ich mal).

Ich möchte aber, dass die Form der Parent des Explorers ist.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Explorer.EXE erzeugen und auf eigene Form verankern

  Alt 16. Sep 2004, 21:16
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!

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;
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz