kurze Frage: gibt es eine sauberere Lösung den Windows(File)Explorer zu steuern etwa über eine COM-Schnittstelle o.ä.?
Gruß
Blues
kurze Frage: gibt es eine sauberere Lösung den Windows(File)Explorer zu steuern etwa über eine COM-Schnittstelle o.ä.?
Gruß
Blues
Ja, das gibt es.
Hier mal eine Funktion, die ich erstellt habe um markierte Dateien im Explorer abzufragen. Weitere Methoden zum Objekt "Shell.Application" kannst du bei MSDN abfragen.
;===============================================================================
; Function Name....: _ActiveExplorer_GetFilesSelected
; Description......: Erstellt ein Array mit
; - Anzahl der markierten Dateien
; - dem Pfad des aktiven Explorerfensters und
; - dem/den Pfad/en der markiert/en Datei/en
; Parameter(s).....: keine
; Requirement(s)...: offenes Explorerfenster
; Return Value(s)..: Array mit den Daten, $a[0] = Anzahl, $a[1] = Ordnerpfad, $a[2..] = Dateiname
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _ActiveExplorer_GetFilesSelected()
Local $oShell = ObjCreate("Shell.Application")
Local $oExplorer, $sPath, $oFolderView, $iCount = 0, $sSelectedFiles = '', $n = 2
For $i = 0 To $oShell.Windows.Count - 1
$oExplorer = $oShell.Windows($i)
$sPath = StringReplace(StringReplace(StringTrimLeft($oExplorer.LocationURL, 8), '%20', ' '), '/', '\')
If WinGetTitle('[ACTIVE]') = $sPath Then ExitLoop
Next
$oFolderView = $oExplorer.Document.SelectedItems()
$iCount = $oFolderView.Count
Local $aOut[$iCount +2]
$aOut[0] = $iCount
$aOut[1] = $sPath
If $iCount = 0 Then
ReDim $aOut[3]
$aOut[2] = 'NO FILE SELECT'
Else
For $oFolderItem In $oFolderView
$aOut[$n] = $oFolderItem.Name
$n += 1
Next
EndIf
Return $aOut
EndFunc ; ==>_ActiveExplorer_GetFilesSelected
Vielen Dank BugFix,
Ich dachte mir schon dass das Senden von Texten an die Windows-Explorer-Adressezeile wie viele andere
Aktionen eher an Verzweiflungslösungen erinnern.
shell.Application scheint sehr mächtig zu sein. Ehrlich gesagt brummt mir gerade der Schädel irgendwie
den Unterschied zwischen den ganzen Schnittstellen die ich gefunden habe zu verstehen:
shell.Application
WScript.Shell
Shell.Explorer
Scripting.XXX
VBScript
Koppeln all diese Schittstellen am Ende an das selbe an? Gibt es noch andere relevante um Windows zu steuern?
Kann mir mal ein Experte ein wenig Klarheit verschaffen?
tausend Dank
Gruß
Blues
Das läßt sich nicht in drei Worten sagen.
Ich empfehle dir dich problembezogen mit den einzelnen Objekten vertraut zu machen. Dann kannst du selbst Gemeinsamkeiten und Unterschiede ausmachen.
Tief im Inneren gehört doch alles zusammen, oder?
Wer hätte gedacht, dass sich hinter einer so technischen Frage soviel Philosophie verbirgt.
Aber gut, habe verstanden. Hätte ja sein können es handelt sich blos um verschiede Zugänge oder veraltete Schnittstellen etc...
wobei ich immerhin schon herausgefunden zu glauben habe, dass shell.explorer = IE und shell.application = WinE
Danke
Gruß
Blues