Hallochen allerseits, ist es möglich den Pfad einer bereits im Windowsexplorer markierten Datei in einer Variablen zu speichern? Also ohne "FileOpenDialog" zu verwenden?
Danke
Stefan
Hallochen allerseits, ist es möglich den Pfad einer bereits im Windowsexplorer markierten Datei in einer Variablen zu speichern? Also ohne "FileOpenDialog" zu verwenden?
Danke
Stefan
Habe ich vor langer Zeit mal erstellt:
;===============================================================================
; Function Name....: _ActiveExplorer_GetSelected
; Description......: Erstellt ein Array mit
; - Anzahl der markierten Dateien/Ordner
; - dem Pfad des aktiven Explorerfensters und
; - dem/den Pfad/en der markiert/en Datei/en /Ordner
; Parameter(s).....: keine
; Requirement(s)...: offenes Explorerfenster
; Return Value(s)..: Array mit den Daten, $a[0] = Anzahl, $a[1] = Ordnerpfad, $a[2..] = Datei/Ordnername
; .................: ACHTUNG! Letzter Index somit $a[0]+1 !!
; Author(s)........: BugFix ( bugfix@autoit.de )
;===============================================================================
;===============================================================================
; Function Name....: _ActiveExplorer_GetSelected
; Description......: Creates an array with
; - Count of selected files/folder
; - Path of active Explorer window and
; - the path/es of selected file/s /folder
; Requirement(s)...: Opened Explorer window
; Return Value(s)..: Array with data, $a[0] = Count, $a[1] = Folderpath, $a[2..] = File/Foldername
; .................: ATTENTION! Last index $a[0]+1 !!
; Author(s)........: BugFix ( AutoIt@bug-fix.info )
;===============================================================================
Func _ActiveExplorer_GetSelected()
Local $oShell = ObjCreate("Shell.Application")
Local $oExplorer, $sPath, $oFolderView, $iCount = 0, $sSelectedFiles = '', $n = 2
Local $oShellWindows = $oShell.Windows
For $i = 0 To $oShellWindows.Count -1
$oExplorer = $oShellWindows($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
Return ''
Else
For $oFolderItem In $oFolderView
$aOut[$n] = $oFolderItem.Name
$n += 1
Next
Return $aOut
EndIf
EndFunc ; ==>_ActiveExplorer_GetSelected
Alles anzeigen
Danke, schau ich morgen an...
Stefan
Danke, schau ich morgen an...
Stefan
Bitte beachten:
Diese Funktion setzt voraus, dass der Datei Explorer im Moment der Abfrage das aktive Fenster ist. Den Aufruf müsstest Du dann z. B. auf einen Hotkey legen in einem AutoIt Skript, das im Hintergrund dümpelt. ![]()
...und ich bin begeistert.... in D-Opus ->neue Symbolleiste einfügen ->Schalter anlegen -> mit *.exe verknüpfen -> fertig und läuft ![]()
ein schönes Wochenende
Stefan
Bitte beachten:
Diese Funktion setzt voraus, dass der Datei Explorer im Moment der Abfrage das aktive Fenster ist. Den Aufruf müsstest Du dann z. B. auf einen Hotkey legen in einem AutoIt Skript, das im Hintergrund dümpelt.
Hier mal noch eine Version, in der der Datei-Explorer nicht aktiv sein muss! Es wird das topmost Explorerfenster verwendet:
EDIT: Eine Besonderheit von Windows muss man aber selbst beachten. Hat man im Explorerfenster im Tree einen Bibliotheksnamen ausgewählt, liefert Windows nicht den Speicherpfad, da es sich hier um eine Verlinkung handelt. Man bekommt stattdessen einen Leerstring. Hat man die Standardoption mit Ordneranzeige gewählt, erhält man dann einen Backslash und Dateinamen. Wählt man jedoch im Tree den unterhalb des Bibliotheksnamens stehenden Ordner, läuft alles wie gewollt.
; #FUNCTION# ====================================================================================================================
; Name ..........: _GetSelectionFromTopMostExplorer
; Description ...: Gets an array with selected files from the top most explorer window
; Syntax ........: _GetSelectionFromTopMostExplorer([$_bDir = True])
; Parameters ....: $_bDir - [optional] Returns the full path (Default 'True'). With 'False' will only the filename returned.
; Return values .: Array with selected files. Counter at $ar[0]
; Requires.......: _GetTopmostHwndFromProcess()
; Author ........: BugFix
; ===============================================================================================================================
Func _GetSelectionFromTopMostExplorer($_bDir=True)
Local $oShell = ObjCreate("Shell.Application")
Local $oIE, $sPath = '', $oShellWindows = $oShell.Windows
Local $oDoc, $bIE = False, $oFV
For $i = 0 To $oShellWindows.Count -1 ; all opened explorer and internet explorer windows
$oIE = $oShellWindows($i)
$oDoc = $oIE.Document
If _GetTopmostHwndFromProcess('explorer.exe', 'CabinetWClass') = $oIE.Hwnd Then
If StringRegExp(ObjName($oDoc), "IShellFolderViewDual.") Then ; be sure it's the explorer object
$sPath =StringReplace(StringReplace(StringTrimLeft($oIE.LocationURL, 8), '%20', ' '), '/', '\') ; extract windows path from file-url
$bIE = True ; flag: found explorer
EndIf
EndIf
Next
Local $aSelection[500] = [0]
If $bIE Then
$oFV = $oIE.Document ; File-Browser (ShellFolderView)
If Not $_bDir Then $sPath = ''
For $oFI In $oFV.SelectedItems ; selected elements there
$aSelection[0] += 1
If $aSelection[0] > UBound($aSelection) Then ReDim $aSelection[UBound($aSelection) +500]
$aSelection[$aSelection[0]] = StringFormat('%s%s%s', $sPath, ($_bDir ? '\' : ''), $oFI.Name)
Next
EndIf
If $aSelection[0] = 0 Then
ReDim $aSelection[1]
Else
ReDim $aSelection[$aSelection[0]+1]
EndIf
Return $aSelection
EndFunc ;==>_GetSelectionFromTopMostExplorer
; #FUNCTION# ====================================================================================================================
; Name ..........: _GetTopmostHwndFromProcess
; Description ...: Returns the handle of the top most window of a specific process
; Syntax ........: _GetTopmostHwndFromProcess($_vProcess)
; Parameters ....: $_vProcess The Process name or PID
; $_sClass The classname of windows that will created by the specific process
; Return values .: Success The handle of the top most window
; Failure 0, set @error = 1 (process does not exists)
; @error = 2 (there is no window for this)
; Author ........: BugFix
; ===============================================================================================================================
Func _GetTopmostHwndFromProcess($_vProcess, $_sClass)
Local $aProc[2][2] = [[1],['',$_vProcess]]
If IsString($_vProcess) Then
$aProc = ProcessList($_vProcess)
If $aProc[0][0] = 0 Then
Return SetError(1,0,0)
EndIf
Else
If Not ProcessExists($_vProcess) Then Return SetError(1,0,0)
EndIf
Local $hWnd = 0, $aWin = WinList('[CLASS:' & $_sClass & ']')
If $aWin[0][0] = 0 Then Return SetError(2,0,0)
Local $tPID = DllStructCreate("int PID")
; check only the first window, has highest z-order
For $i = 1 To $aProc[0][0]
DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $aWin[1][1], "ptr", DllStructGetPtr($tPID))
If $tPID.PID = $aProc[$i][1] Then Return $aWin[1][1]
Next
Return 0
EndFunc ;==>_GetTopmostHwndFromProcess
Alles anzeigen
Nachtrag:
In der Version im vorigen Post hatte ich die Reihenfolge der Fenster aus WinList ausgelesen, musste nun aber feststellen, dass WinList diese Liste ungeordnet erstellt. Somit wurde bei gleicher Klasse immer auf das zuerst erstellte Fenster zugegriffen.
Habe ich in dieser Version korrigiert. Zusätzlich noch einen Fehler beim Auslesen aus Rootlaufwerken (Backslash wurde als Pfad mit übernommen).
#include <WinAPIProc.au3>
#include <WinAPISys.au3>
#cs
#include <Array.au3>
$aTest = _GetSelectionFromTopMostExplorer()
_ArrayDisplay($aTest)
$aTest = _GetSelectionFromTopMostExplorer(False)
_ArrayDisplay($aTest)
#ce
; #FUNCTION# ====================================================================================================================
; Name ..........: _GetSelectionFromTopMostExplorer
; Description ...: Gets an array with selected files from the top most explorer window
; Syntax ........: _GetSelectionFromTopMostExplorer([$_bDir = True])
; Parameters ....: $_bDir - [optional] Returns the full path (Default 'True'). With 'False' will only the filename returned.
; Return values .: Array with selected files. Counter at $ar[0]
; Requires.......: _GetTopmostHwndFromProcess()
; Author ........: BugFix
; ===============================================================================================================================
Func _GetSelectionFromTopMostExplorer($_bDir=True)
Local $oShell = ObjCreate("Shell.Application")
Local $oIE, $sPath = '', $oShellWindows = $oShell.Windows
Local $oDoc, $bIE = False, $oFV
For $i = 0 To $oShellWindows.Count -1 ; all opened explorer and internet explorer windows
$oIE = $oShellWindows($i)
$oDoc = $oIE.Document
If _GetTopmostHwndFromProcess('explorer.exe', 'CabinetWClass') = $oIE.Hwnd Then
If StringRegExp(ObjName($oDoc), "IShellFolderViewDual.") Then ; be sure it's the explorer object
$sPath = StringReplace(StringReplace(StringTrimLeft($oIE.LocationURL, 8), '%20', ' '), '/', '\') ; extract windows path from file-url
$sPath = StringRegExpReplace($sPath, '(\\)$', '') ; "C:\" --> "C:"
$bIE = True ; flag: found explorer
EndIf
EndIf
Next
Local $aSelection[500] = [0]
If $bIE Then
$oFV = $oIE.Document ; File-Browser (ShellFolderView)
If Not $_bDir Then $sPath = ''
For $oFI In $oFV.SelectedItems ; selected elements there
$aSelection[0] += 1
If $aSelection[0] > UBound($aSelection) Then ReDim $aSelection[UBound($aSelection) +500]
$aSelection[$aSelection[0]] = StringFormat('%s%s%s', $sPath, ($_bDir ? '\' : ''), $oFI.Name)
Next
EndIf
If $aSelection[0] = 0 Then
ReDim $aSelection[1]
Else
ReDim $aSelection[$aSelection[0]+1]
EndIf
Return $aSelection
EndFunc ;==>_GetSelectionFromTopMostExplorer
; #FUNCTION# ====================================================================================================================
; Name ..........: _GetTopmostHwndFromProcess
; Description ...: Returns the handle of the top most window of a specific process
; Syntax ........: _GetTopmostHwndFromProcess($_vProcess)
; Parameters ....: $_vProcess The Process name or PID
; $_sClass The classname of windows that will created by the specific process
; Return values .: Success The handle of the top most window
; Failure 0, set @error = 1 (process does not exists)
; @error = 2 (there is no window for this)
; Author ........: BugFix
; ===============================================================================================================================
Func _GetTopmostHwndFromProcess($_vProcess, $_sClass)
Local $aProc[2][2] = [[1],['',$_vProcess]]
If IsString($_vProcess) Then
$aProc = ProcessList($_vProcess)
If $aProc[0][0] = 0 Then
Return SetError(1,0,0)
EndIf
Else
If Not ProcessExists($_vProcess) Then Return SetError(1,0,0)
EndIf
; get the highest z-order
Local $hWnd = 0, $aWin = _WinAPI_EnumDesktopWindows(_WinAPI_GetThreadDesktop(_WinAPI_GetCurrentThreadId()), False)
For $i = 1 To $aWin[0][0]
If $aWin[$i][1] = $_sClass Then ; first found window of this class has the highest z-order
$hWnd = $aWin[$i][0]
ExitLoop
EndIf
Next
If $hWnd = 0 Then Return SetError(2,0,0)
Local $tPID = DllStructCreate("int PID")
For $i = 1 To $aProc[0][0]
DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $hWnd, "ptr", DllStructGetPtr($tPID))
If $tPID.PID = $aProc[$i][1] Then Return $hWnd
Next
Return 0
EndFunc ;==>_GetTopmostHwndFromProcess
Alles anzeigen
Hallo BugFix
gibt es von dieser Funktion auch eine Version, die das aktuell im Fokus befindliche Explorerfenster verwendet?
Das Tool, was ich gerade schreibe, nutzt deinen Code um rekursiv nach bestimmten Dateitypen zu suchen.
Ich Rechtsklicke auf einen Ordner und dann geht´s los. Es funktioniert alles einwandfrei, bis der Moment kommt, dass ein neues Explorerfenster aufgemacht wird, um irgendwas zu tun. Wechsle ich dann zum vorherigen Fenster zurück, und rechtsklicke dann auf den Ordner, gibt deine Funktion den Ordnerpfad aus dem zuletzt geöffneten, also dem falschen Explorerfenster zurück.
Dann speichere dir das Handle des Explorerfensters, das wird ja in der Funktion ermittelt. Du passt die Funktion dann so an, dass du alternativ ein Handle übergeben kannst. Wird das übergeben überspringst du in der Funktion den Part zum Ermitteln des Handles. Probier einfach mal.
Moin Lottich, wie wäre es mit dieser Version?
Ich hatte mal eine ähnliche Funktion.
Hab die mal schnell erweitert, so dass man die Rückgabe je nach gewünschtem Attribut sortiert zurückerhält:
#include <Array.au3>
#include <WinAPIShPath.au3>
#include <WinAPISysWin.au3>
; alle Explorerfenster abfragen und diese nach z-index sortieren so dass das vorderste Fenster im Index 0 steht
Global $aExplorerWindows = _getSelectExplorerFiles(False, "z-index")
For $mExplWin In $aExplorerWindows
ConsoleWrite("----------------------------" & @CRLF & _
"Path: " & $mExplWin["path"] & @CRLF & _
"Handle: " & $mExplWin["handle"] & @CRLF & _
"Z-Index: " & $mExplWin["z-index"] & @CRLF & _
"Creation-Index: " & $mExplWin["creation-index"] & @CRLF & _
"----------------------------" & @CRLF & @CRLF)
_ArrayDisplay($mExplWin["selected"], $mExplWin["path"])
Next
; #FUNCTION# ====================================================================================================================
; Name ..........: _getSelectExplorerFiles()
; Description ...: Returns an array of maps for currently opened explorer windows with path, handle, z-index and selected files
; Syntax ........: _getSelectExplorerFiles($bFullpath = True, $sSortBy = "z-index")
; Parameters ....: bFullpath - [Boolean]
; ↳ true: the full path of the selected files are returned
; ↳ false: only the names of the selected files are returned
; sSortBy - [String] Key to sort by (ascending). Valid values:
; ↳ "z-index": window stacking order (0 = topmost)
; ↳ "creation-index": iteration order (creation order)
; ↳ "handle": window handle value
; ↳ "": no sorting (iteration order preserved)
; Return value ..: Success: [Array of Maps]: each map contains {path, handle, z-index, creation-index, selected}
; Failure: Null and set @error to:
; | 1: error during open Shell.Application
; Author ........: AspirinJunkie
; Modified.......: 2026-02-02
; Remarks .......: z-index: The smaller the z-index, the further the window is in the foreground.
; creation-index: iteration order of Shell.Windows (likely creation order, undocumented)
; Related .......: _WinAPI_PathCreateFromUrl(), _WinAPI_GetWindow()
; ===============================================================================================================================
Func _getSelectExplorerFiles($bFullpath = True, $sSortBy = "z-index")
Local $oShell = ObjCreate("Shell.Application")
If Not IsObj($oShell) Then Return SetError(1, 0, Null)
Local $oWindows = $oShell.Windows, _
$aReturn[$oWindows.Count], _
$iCount = 0
For $oWin In $oWindows
Local $oSelectedFiles = $oWin.Document.SelectedItems()
If Not IsObj($oSelectedFiles) Then ContinueLoop
Local $aSelected[$oSelectedFiles.Count], $iC = 0
For $oFile In $oSelectedFiles
$aSelected[$iC] = $bFullpath ? $oFile.Path : $oFile.Name
$iC += 1
Next
Local $hWnd = HWnd($oWin.HWND)
; determine z-index
Local $iZIndex = -1, $hCurrent = $hWnd
Do
$iZIndex += 1
$hCurrent = _WinAPI_GetWindow($hCurrent, $GW_HWNDPREV)
Until $hCurrent = 0
Local $mEntry[]
$mEntry["path"] = _WinAPI_PathCreateFromUrl($oWin.LocationURL)
$mEntry["handle"] = $hWnd
$mEntry["z-index"] = $iZIndex
$mEntry["creation-index"] = $iCount
$mEntry["selected"] = $aSelected
$aReturn[$iCount] = $mEntry
$iCount += 1
Next
; shrink to exact size
ReDim $aReturn[$iCount]
; Sort by specified key ascending
If $sSortBy <> "" Then
For $i = 1 To UBound($aReturn) - 1
Local $mTemp = $aReturn[$i]
Local $j = $i - 1
While $j >= 0 And ($aReturn[$j])[$sSortBy] > $mTemp[$sSortBy]
$aReturn[$j + 1] = $aReturn[$j]
$j -= 1
WEnd
$aReturn[$j + 1] = $mTemp
Next
EndIf
Return SetExtended(UBound($aReturn), $aReturn)
EndFunc
Alles anzeigen
Damit kann man selbst festlegen ob man nach dem z-index sortiert haben möchte um die Fenster entsprechend ihrer Darstellungsreihenfolge anzuzeigen oder doch eher nach deren Erstellreihenfolge um die ältesten bzw. jüngsten Fenster zu verwenden.
Hi zusammen, hi AspirinJunkie 👋 ,
diese Variante funktioniert wunderbar und finde ich sehr gut verwendbar, Danke.
Heißt nicht automatisch das die anderen Ansätze und Vorschläge nicht auch gut sind, die gezeigte passt mir einfach am besten 😁 .
Bin gespannt was Lottich so bereichtet.
Eine erfolgreiche Woche euch allen, bis später.
Viele Grüße
Sven
Moin Lottich, wie wäre es mit dieser Version?
Hallo Velted , diese Funktion hab ich auch schon probiert, mit dem gleichen Resultat. Es gibt das Ergebnis aus dem zuletzt geöffneten Explorerfenster.
so hab ich es getestet:
ich öffne den Explorer und navigiere zum Ordner, den ich rechtsklicken will. Dann öffne ich eine neue Instanz vom Explorer, markiere einen anderen Ordner. Danach switche ich zurück zur 1. Instanz mit meinem gewünschten Ordner.
Dann markiere ich ihn und starte das Script, um den Pfad meines Wunschordners zu bekommen. Aber es gibt mir den Pfad des anderen Ordners zurück.
AspirinJunkie Das ist ja cool. Das ist diese Maps-Geschichte?! Habe noch nie mit sowas gearbeitet. Das 1. ArrayDisplay gibt mir direkt den Pfad meines Wunschordners aus, selbst wenn ich mehrere Explorer Instanzen geöffnet habe. Allerdings im Anschluss auch Infos aus allen anderen geöffneten Instanzen. Das liegt sicherlich an "For... In..." in Zeile 8. Kann man das umbauen, sodass nur der 1. Wert ($mExplWin["path"]) zurück kommt, ohne die Info´s der anderen Instanzen?
Wenn ich versuche mir direkt $mExplWin["path"] auszugeben, schimpft Scite, dass ich die Variable nicht deklariert habe. Wenn ich das richtig verstehe, wird $mExplWin erst mit Werten in der For-In-Schleife befüllt und gültig. Dann hört´s aber auch schon auf mit meinem Verstehen, sofern das überhaupt korrekt ist.
Ist genauso wie bei der Funktion von BugFix . Das ist so viel höher als mein eigener AutoIt Skill, dass ich mir den Code zwar anschauen kann, aber nur einen Bruchteil davon verstehe. Ich bin was Programmieren angeht nur ein Hobbybastler und manchmal kann ich fremde Funktionen für meine Bedürfnisse anpassen. Aber das hier übersteigt mein Können bei weitem. Und ich bin alt genug, dass ich das zugeben kann ![]()
Kann man das umbauen, sodass nur der 1. Wert ($mExplWin["path"]) zurück kommt, ohne die Info´s der anderen Instanzen?
$aExplorerWindows ist ein Array.
Die Werte des Arrays sind einzelne Maps mit Infos zu den einzelnen Explorer-Fenstern.
Momentan werden diese nach dem z-index sortiert.
Daher ist das Fenster im Vordergrund bei dir das erste Element.
Das erste Element eines AutoIt-Arrays liegt im Index [0].
Sprich du musst $mExplWin = $aExplorerWindows[0] setzen, dann beinhaltet $mExplWin die Infos zum obersten Explorer-Fenster.
ohhh, ich wusste nicht wie ich die Maps auswerten muss. hab mir das auch schon mit arraydisplay ausgeben lassen. 3 offene Explorerfenster -> 3 Einträge im Array, alle mit dem Namen {Map[5]} ... da ist das 1. mal der D-Zug durch den Bahnhof gerauscht ![]()
Global $aExplorerWindows = _getSelectExplorerFiles(True, "z-index")
Global $mExplWin = $aExplorerWindows[0]
MsgBox(0,0,($mExplWin["selected"])[0])
So klappt endlich die Ausgabe des markierten Ordners. Hat eine Weile gedauert, bis ich verstanden habe, dass $mExplWin["selected"] nochmals in Klammern gesetzt werden muss. Wäre ja sonst ein 2D Array, was ein Fehler wäre.
Ich hatte schon befürchtet, dass ich mein Tool umschreiben muss. Vielen Dank AspirinJunkie Das sollte ich jetzt so in mein Tool übernehmen können.
Moin Lottich,
wenn ich Deine Anforderungen lese und das Skript von AspirinJunkie immer in ($mExplWin["selected"])[0] den von Dir gewünschten Pfad liefert, heißt das für mich, Du suchst den Pfad des von Dir in einem aktuell aktiven Explorerfenster auf der rechten Seite markierten /selektierten Eintrags.
Wenn das so ist, sollte die folgende Methode 'geradeaus' zum Ziel führen:
HotKeySet('^!g', "GetFolder")
HotKeySet('{Esc}', "Cancel")
; Halte das Skript am Laufen, bis der Benutzer es beendet
While 1
Sleep(100) ; Warte in einer Schleife
WEnd
Func Cancel()
Exit
EndFunc
Func GetFolder()
MsgBox(0, "Aktives Verzeichnis", GetSelectedItemFromActiveExplorer())
EndFunc
;=======================================================================================================================
; Aktives Shellfensterobjekt bestimmen und ggf. den Pfad des (ersten) selektierten Elements zurückgeben
; InternetExplorer->Document = ShellFolderView Objekt
;=======================================================================================================================
Func GetSelectedItemFromActiveExplorer()
Static $CLSID_ShellFolderView = "{62112AA1-EBE4-11CF-A5FB-0020AFE7292D}"
Local $oShFolderView = 0
Local $hAct = DllCall("user32.dll", "hwnd", "GetForegroundWindow")[0] ; _WinAPI_GetForegroundWindow()
If $hAct <> 0 Then
For $oShellWindow In ObjCreate("Shell.Application").Windows()
If $oShellWindow.hWnd = $hAct Then
$oShFolderView = $oShellWindow.Document
IF IsObj($oShFolderView) And (ObjName($oShFolderView, 6) = $CLSID_ShellFolderView) Then
If $oShFolderView.SelectedItems.Count > 0 Then
Return $oShFolderView.SelectedItems.Item(0).Path
EndIf
EndIf
EndIf
Next
EndIf
EndFunc ;==>GetSelectedItemFromActiveExplorer
Alles anzeigen
Stimmt, das funktioniert auch. Das erscheint auf den 1. Blick auch einfacher/simpler als die Funktionen von AspirinJunkie und BugFix
Doch auch das hätte ich selber nicht hinbekommen. DLLCalls & Objekte... Davon hab ich keine Ahnung. Ich schustere mir meine Scripts mit der AutoIt-Hilfe zusammen und wenn ich da nicht weiter komme, frage ich die Gemeinschaft.
Und ich bin dankbar für jedwede Unterstützung, die mir gewährt wird. Mein aktuelles Script dient dem "Aufräumen" meiner Mediensammlung. Mit einer Quick&Dirty-Lösung (weil ich mit cURL nicht klar komme). Euch würde schlecht werden, wenn ihr den Code seht ![]()
Aber hey, es ist für mich und ein paar Freunde und es macht letztendlich was es soll. Kein Desktoplink nötig, es startet per Rechtsklick auf einen Ordner aus dem Kontextmenü heraus, aber auch nur dann, wenn alle Voraussetzungen dazu erfüllt sind. Deshalb ist gerade diese Funktion hier so wichtig dafür.
Danke für eure Unterstützung ![]()
Anmerkung für alle Leser:
alle 3 Funktionen von AspirinJunkie , BugFix und auch die von Velted funktionieren.
Ich schustere mir meine Scripts mit der AutoIt-Hilfe zusammen und wenn ich da nicht weiter komme, frage ich die Gemeinschaft.
So soll es auch sein, ist doch super wenn dein Anwendungsfall erfüllt ist, egal ob besonders elegant gelöst oder nicht. Am Ende soll es funktionieren und meist hat man privat auch gar nicht so den Skalierungs- und Erweiterbarkeitsbedarf - daher alles fein.
Mit einer Quick&Dirty-Lösung (weil ich mit cURL nicht klar komme).
Rein aus Interesse: was wolltest du denn mit cURL in deinem Kontext machen? Verstehe nicht so ganz wie dir cURL überhaupt helfen hätte können, für das was du beschreibst 😅 .
alle 3 Funktionen von AspirinJunkie , BugFix und auch die von Velted funktionieren.
Danke auch für dieses Feedback. Sowas finde ich immer schön. Zum einen ist das Wertschätzung den Leuten die Helfen gegenüber, zum anderen ist es für Leute die über dieses Thema stolpern gut zu wissen, dass für den Anwendungsfall alle drei Funktionen eine Option wäre. Meist bleibt so ein Feedback aus und dann weiß man i.d.R. nicht, wo die richtige Lösung ist (da wir sie hier nicht markieren oder so). Naja ... egal, wollte einfach Danke sagen das du Lottich sinnvoll Kontext und Feedback gibst 👌.
Viele Grüße
Sven
Rein aus Interesse: was wolltest du denn mit cURL in deinem Kontext machen? Verstehe nicht so ganz wie dir cURL überhaupt helfen hätte können, für das was du beschreibst 😅 .
Es wird eine Abfrage an eine Online-DB gestartet. in den meisten Fällen geht das nur per cURL. Musste schon etwas länger suchen um eine DB zu finden, die das mit "normaler" URL macht UND auch den deutschen Inhalt angibt. Ich lade die gefundene HTML Quellcode runter, in ein Array und gehe das dann letzendlich mit stringbetween durch.
Danke für die Erklärung Lottich 👍 . Dennoch verstehe ich es nicht genau, da cURL erstmal nur ein HTTP Client ist und HTTP requests auch von etlichen anderen Clients (auch AutoIt kann als Client dienen) gesendet werden kann. Des Weiteren ist dies ...
[...] etwas länger suchen um eine DB zu finden, die das mit "normaler" URL macht [...]
... auch nicht so viel sagend 😅 . Was soll eine normale URL sein usw.
Aber egal, du hast dein Problem gelöst, gut ist. Ich möchte nicht zu viele (kind of) Off-Topic Fragen stellen, um den Thread hier nicht vom eigentlichen Thema abzulenken.
Falls du Interesse hast und dich etwas tiefer austauschen möchtest, dann kannst du gern den AutoIt Commnity Discord Server dafür nutzen. Dies machen einige wenige hier ebenfalls, wenn bspw. die Shoutbox nicht ausreicht oder es sich nicht gleich lohnt, einen eigenen Thread zu öffnen.
Viele Grüße
Sven