Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Im Explorer ausgewähltes Verzeichnis ermitteln (https://www.delphipraxis.net/146655-im-explorer-ausgewaehltes-verzeichnis-ermitteln.html)

mz23 24. Jan 2010 17:32


Im Explorer ausgewähltes Verzeichnis ermitteln
 
Hallo liebe DP-Gemeinde,

ich "nerve" heute nochmal mit einer weiteren Frage.

Ich verwende in einem Programm eine DriveComboBox mit DirectoryListBox und FileListBox.
Alles wie gehabt und geht bestens, soweit komme ich klar.

Nun möchte ich zwei Buttons mit "reinmachen", einer öffnet den Win-Explorer in dem
Verzeichnis im momentanen Verzeichnis der DirectoryListBox.Directory, kein Problem-

Der zweite Button soll beim Anklicken das momentan im Win-Explorer ausgewählte
Verzeichnis in die DirectoryListBox.Directory des Programmes übernehmen.

Nun zu meiner Frage: Wie bekomme ich die Information, welches Verzeichnis momentan
im Explorer ausgewählt wurde? - Also nicht das Start-Verzeichnis des Explorers, wenn
er startet, das bekomme ich aus der Registrierungs.Datei, das ist mir bekannt.

Mit freundlichen Grüßen
Manfred Zenns

e-gon 26. Jan 2010 12:22

Re: Im Explorer ausgewähltes Verzeichnis ermitteln
 
Hallo Manfred,

Du willst Daten aus einem anderen laufenden Programm herauslesen? Das ginge nur wenn der Explorer eine entsprechende Schnittstelle zur Verfügung stellen würde. Meines Wissens tut er das jedoch nicht.

Es gäbe aber die Möglichkeit vom Explorer aus die Verzeichnis-Infos Deinem Programm zu übermitteln. Beispielsweise wenn Du Dein Programm in den sendto-Ordner einfügst und es dann über das Kontextmenü des Explorers aufrufst.
Beim Aufruf könntest Du dann prüfen, ob Dein Programm bereits geöffnet ist und falls ja, das aktuelle Verzeichnis diesem übergeben.

Gruß
e-gon

mz23 26. Dez 2010 08:14

AW: Re: Im Explorer ausgewähltes Verzeichnis ermitteln
 
Zitat:

Zitat von e-gon (Beitrag 992400)
Hallo Manfred,

Du willst Daten aus einem anderen laufenden Programm herauslesen? Das ginge nur wenn der Explorer eine entsprechende Schnittstelle zur Verfügung stellen würde. Meines Wissens tut er das jedoch nicht.

Es gäbe aber die Möglichkeit vom Explorer aus die Verzeichnis-Infos Deinem Programm zu übermitteln. Beispielsweise wenn Du Dein Programm in den sendto-Ordner einfügst und es dann über das Kontextmenü des Explorers aufrufst.
Beim Aufruf könntest Du dann prüfen, ob Dein Programm bereits geöffnet ist und falls ja, das aktuelle Verzeichnis diesem übergeben.

Gruß
e-gon

Wow! Das ist der ultimative Tipp.
Vielen Dank auch, dann brauch ich nicht immer
alle Dateien markieren und per Drag'n'Drop in
mein Program rüberzuschaufeln.

Manchmal steht man einfach auf dem Schlauch :)

Vielen Dank und Tschüß

RWarnecke 26. Dez 2010 08:39

AW: Im Explorer ausgewähltes Verzeichnis ermitteln
 
Eine andere Möglichkeit wäre mit WinSpy den Wert vielleicht zu übergeben. Das zeigt mir WinSpy unter Windows 7 für die Adresszeile im Windows Explorer an :
Delphi-Quellcode:
var
  wnd: HWND;
begin
  wnd := FindWindow('CabinetWClass','Daten (D:)');
  wnd := FindWindowEx(wnd, 0, 'WorkerW', nil);
  wnd := FindWindowEx(wnd, 0, 'ReBarWindow32', nil);
  wnd := FindWindowEx(wnd, 0, 'Address Band Root', nil);
  wnd := FindWindowEx(wnd, 0, 'msctls_progress32', nil);
  wnd := FindWindowEx(wnd, 0, 'ComboBoxEx32', nil);
  wnd := FindWindowEx(wnd, 0, 'ComboBox', nil);
  wnd := FindWindowEx(wnd, 0, 'Edit', nil);
  if wnd <> 0 then
  begin
   //  ShowMessage('Window found. Handle: ' + IntToStr(wnd));
     writeln('Window found. Handle: ' + IntToStr(wnd));
     FlashWindow(wnd);
  end;
end.
Vielleicht hilft Dir das ja weiter.

xaromz 26. Dez 2010 21:54

AW: Im Explorer ausgewähltes Verzeichnis ermitteln
 
Hallo,
Zitat:

Zitat von RWarnecke (Beitrag 1070479)
Eine andere Möglichkeit wäre ...

Aua! Genau solche Konstrukte sind der Grund, warum Windows so viel Kompatibilitätshacks mitschleppt. Finger weg!

Gruß
xaromz

mz23 27. Dez 2010 18:06

AW: Im Explorer ausgewähltes Verzeichnis ermitteln
 
Zitat:

Zitat von RWarnecke (Beitrag 1070479)
Eine andere Möglichkeit wäre mit WinSpy den Wert vielleicht zu übergeben. Das zeigt mir WinSpy unter Windows 7 für die Adresszeile im Windows Explorer an :
Delphi-Quellcode:
var
  wnd: HWND;
begin
  wnd := FindWindow('CabinetWClass','Daten (D:)');
  wnd := FindWindowEx(wnd, 0, 'WorkerW', nil);
  wnd := FindWindowEx(wnd, 0, 'ReBarWindow32', nil);
  wnd := FindWindowEx(wnd, 0, 'Address Band Root', nil);
  wnd := FindWindowEx(wnd, 0, 'msctls_progress32', nil);
  wnd := FindWindowEx(wnd, 0, 'ComboBoxEx32', nil);
  wnd := FindWindowEx(wnd, 0, 'ComboBox', nil);
  wnd := FindWindowEx(wnd, 0, 'Edit', nil);
  if wnd <> 0 then
  begin
   //  ShowMessage('Window found. Handle: ' + IntToStr(wnd));
     writeln('Window found. Handle: ' + IntToStr(wnd));
     FlashWindow(wnd);
  end;
end.
Vielleicht hilft Dir das ja weiter.

Cool! Vielen Dank, werde ich gleich ausprobieren.
Wenn man weiß, wie nur ein Begriff heißt, weil man
eine Methode sucht, ist's halb so wild :)
Siehe den Tipp mit den Column Handlers für die
Explorer Detail-Ansichten.

Vielen schönen Dank und einen gutes Neues Jahr Euch allen!

Luckie 27. Dez 2010 18:37

AW: Im Explorer ausgewähltes Verzeichnis ermitteln
 
Und unter wie vielen Windows Versionen funktioniert das?

mz23 27. Dez 2010 19:07

AW: Im Explorer ausgewähltes Verzeichnis ermitteln
 
Zitat:

Zitat von Luckie (Beitrag 1070661)
Und unter wie vielen Windows Versionen funktioniert das?

Hallo Luckie,
unter Win-Vista Home Edition funktioniert das Tool.
Ob allerdings die angezeigten Werte alle stimmen... :)

MfG
mz23

DeddyH 27. Dez 2010 19:12

AW: Im Explorer ausgewähltes Verzeichnis ermitteln
 
Naja, wenn man dann erst die genaue Windows-Version bestimmen müsste, dann würde ich wahrscheinlich einen anderen Weg suchen, da so etwas nur Scherereien mit sich bringt.

WM_CLOSE 27. Dez 2010 23:00

AW: Im Explorer ausgewähltes Verzeichnis ermitteln
 
Das funktioniert seit XP, Der Explorer ist seitdem gleich aufgebaut.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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