| Autor |
Beitrag |
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 24.07.05 16:47
Wie kann man einen Ordner öffnen und dabei gleich eine Datei anwählen ohne die zu öffnen? Bei ShellExecute scheint es nicht zu gehen, oder etwa doch? Moderiert von Christian S.: Topic aus CLX / Delphi Language (Object-Pascal) verschoben am So 24.07.2005 um 19:37
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: So 24.07.05 16:53
Was meinst du mit anwählen? Focus drauf setzen?
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 24.07.05 16:57
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: So 24.07.05 17:15
mit shellexecute den ordner öffnen und den dateinamen der ausgewählt werden soll per sendkeys an das neue fenster schicken
dann markiert der explorer die datei automatisch
ne sendkeys unit findest du im SMILEMASTER 2005 source
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 24.07.05 18:37
Ich habe es jetzt so:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var h: hwnd; begin h:=ShellExecute(Form1.Handle, 'explore', nil, nil, PChar(ExtractFileDir(Form1.SpeicherortEdit.Text)), SHOW_OPENWINDOW); sendmessage(h,WM_SETFOCUS,0,0); keysend.SendKeys(Form1.SpeicherortEdit.Text); |
Allerdings funktioniert das nicht. Was muss ich noch machen?
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: So 24.07.05 19:35
Delphi-Quelltext 1:
| keysend.SendKeys(extractfilename(Form1.SpeicherortEdit.Text)); |
statt 'explore' kannste auch mal 'open' versuchen
und statt WM_SETFOCUS evtl setforegroundwindow
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 24.07.05 20:41
Also so hier:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.ZielSuchenButtonClick(Sender: TObject); var h: hwnd; begin h:=ShellExecute(Form1.Handle, 'open', nil, nil, PChar(ExtractFileDir(Form1.SpeicherortEdit.Text)), SHOW_OPENWINDOW); sendmessage(h,WM_SETFOCUS,0,0); keysend.SendKeys(ExtractFileName(Form1.SpeicherortEdit.Text)); end; |
Wie du das mit setforegroundwindow weiß ich allerdings nicht, denn das anstatt WM_SETFOCUS funktioniert nicht, das Delphi da rummeckert.
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Fr 29.07.05 15:46
Oder funktioniert das vlt. auch irgendwie mit Parametern bei ShellExecute?
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 29.07.05 16:56
Heiko hat folgendes geschrieben: | | Also so hier: |
ja.
Heiko hat folgendes geschrieben: | | Oder funktioniert das vlt. auch irgendwie mit Parametern bei ShellExecute? |
nein.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Fr 29.07.05 23:34
Hallo,
wenn ich das richtig verstanden habe, willst Du den Explorer starten und eine Datei soll entsprechend deiner Vorgabe markiert sein.
z.B.
Delphi-Quelltext 1: 2: 3: 4:
| var Datei : String; begin Datei := 'C:\Temp\DieseDateiMarkieren.txt'; ShellExecute(Form1.Handle, 'open','explorer.exe',Pchar('/e,/select,'+Datei), '', SW_SHOWNORMAL); |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 31.07.05 14:42
thx, das funktioniert so wie ich es will.
Allerdings würde mich noch interessieren, was das /e bei den Parametern bedeutet (/select ist ja das selektieren bestimmt).
Zuletzt bearbeitet von Heiko am So 31.07.05 15:44, insgesamt 1-mal bearbeitet
|
|
Sprint
      
Beiträge: 849
|
Verfasst: So 31.07.05 14:54
Heiko hat folgendes geschrieben: | | Allerdings würde mich noch interessieren, was das /e bei den Parametern bedeutet (/select ist ja das selektieren bestimmt). |
Auszug aus der Datei TIPS.TXT (Microsoft Windows 98SE):
| Zitat: | Schalter für den Windows-Explorer
---------------------------------
Schalter für den Windows-Explorer sind nützlich beim Erstellen von
Ordnern, die als Stammverzeichnis dienen sollen:
Explorer [/e,][/root,<objekt>,] [[<ordner>]| [/select,
<unterobjekt>]]
/e Explorer-Ansicht verwenden (Ansicht "Alle Ordner" in
der Explorerleiste).
Standardeinstellung ist Ansicht "Keine" in der
Explorerleiste.
/root,<objekt> Geben Sie das Objekt im "normalen" Namespace an,
das als Stammverzeichnis (oberste Ebene) für den
Windows-Explorer dient. Standardeinstellung ist der
Ordner Desktop.
/select Der übergeordnete Ordner wird geöffnet, und das
angegebene Objekt wird ausgewählt.
<unterobjekt> Der Ordner oder die Datei, der bzw. die im Windows-
Explorer geöffnet wird. Wenn der Schalter /select
verwendet wird, ist das Unterobjekt hervorgehoben.
Andernfalls wird der Ordner oder die Datei im Explorer
geöffnet. Standardeinstellung ist root<objekt>.
Beispiele: Explorer /e, /root, \\Berichte
Öffnet ein Explorer-Fenster in \\Berichte.
Explorer /select, C:\Windows\Calc.exe
Öffnet einen Ordner in C:\Windows (oder aktiviert einen
Ordner, der gegenwärtig geöffnet ist) und wählt Calc.exe
aus.
Explorer /e, /root,
\Source\Intern\Design\Benutzer\Thomas\Archiv
Öffnet im angegebenen Archivordner einen Ordner. Dies
ist eine gute Methode, einen dedizierten Remote-
Archivordner für Dokumente zu erstellen. Dadurch können
Sie eine Verknüpfung zu den Ordnern
\\Source\Intern\Design\Benutzer\Thomas\Archiv in den
Ordner SendTo platzieren und so Dokumente rasch
übertragen. |
_________________ Ciao, Sprint.
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: So 31.07.05 15:59
k, thx Sprint
Die Datei existiert nicht unter XP. Ich habe gerade die gesamte Festplatte durchsuchen lassen ohne Erfolg.
|
|
Sprint
      
Beiträge: 849
|
Verfasst: So 31.07.05 16:13
Ich weiß. Darum habe ich auch Windows 98 SE dahinter geschrieben.
_________________ Ciao, Sprint.
|
|
Heiko 
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Do 11.05.06 17:03
Mhm, ich wollte jetzt bei dem Problem auch Multiselect einführen. Nur irgendwie bekomme ich das nicht gebacken, dass er mehr als eine Datei markiert.
Ich habs bisher auf folgende 2 Varianten probiert, die beide nicht funktionieren  :
Delphi-Quelltext 1: 2:
| ShellExecute(Handle, 'open','explorer.exe', PChar('/e,/select,' + 'C:\flashplayer.xpt,C:\PDOXUSRS.NET'), nil , SW_SHOWNORMAL); |
Delphi-Quelltext 1: 2:
| ShellExecute(Handle, 'open','explorer.exe', PChar('/e,/select,' + 'C:\flashplayer.xpt,/select,C:\PDOXUSRS.NET'), nil , SW_SHOWNORMAL); |
Und mit Leerzeichen, statt dem Komma, zw. den Pfaden nimmt er auch nicht an  .
|
|
|