Pfad/Dateiname der aktuell geöffneten Datei auslesen

  • Hallo!

    Langsam aber sicher kommen bei mir immer mehr interessante Probleme zum Vorschein.

    Ist es möglich, den Pfad bzw den Dateinamen einer aktuell geöffneten beliebeigen Datei rauszufinden?
    z.B.: eines geöffneten Word Dokuments, oder was weiß ich, irgend ein Programm.

    mfg

  • Probiers mal so, ist nur ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Hauptfenster
    GUICreate("Pfadangabe", 500, 100)

    [/autoit] [autoit][/autoit] [autoit]

    ; Eingabefeld
    $input = GUICtrlCreateInput("", 20, 30, 330, 25)

    [/autoit] [autoit][/autoit] [autoit]

    ; Button
    $button = GUICtrlCreateButton("Durchsuchen...", 370, 30, 100, 25)

    [/autoit] [autoit][/autoit] [autoit]

    ; Text
    GUICtrlCreateLabel("By M3HM3T", 210, 80)

    [/autoit] [autoit][/autoit] [autoit]

    ; Die Anzeige für das Hauptfenster
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()

    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button
    $open = FileOpenDialog("Datei öffnen...", @DesktopDir, "Alle Dateien (*.*)")
    GUICtrlSetData($input, $open)
    EndSwitch

    WEnd

    [/autoit]

    Mfg

    M3HM3T

  • Hallo vario.

    Wenn das Programm, deren Pfad Du erfahren möchtest eine AutoIt Datei ist, kannst Du doch
    @AutoItExe (Der komplette Pfad und Dateiname der AutoIt-Exe-Datei. Bei kompilierten Skripten der Pfad des laufendes Skriptes.)
    verwenden.
    Lass durch das Programm den Pfad in eine Datei schreiben und durch das Programm, wo Du die Pfadangabe brauchst aus der dann gespeicherten Datei auslesen.
    Kann zum Beispiel in eine INI-Datei geschrieben und ausgelesen werden, aber das muß dann das Programm machen, wo Du den Pfad erfahren möchtest.

    Hoffe Du hast meine Denkweise verstanden.

    Gruß, Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag

    Hi,

    also hier erstmal ein Bsp für Prozess --> Pfad

    [autoit]

    Global $Pfad = _ProcessGetPath("firefox.exe")

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, "", "Prozesspfad: " & $Pfad)

    [/autoit][autoit][/autoit][autoit]

    Func _ProcessGetPath($PID)
    If IsString($PID) Then $PID = ProcessExists($PID)
    $Path = DllStructCreate("char[1000]")
    $dll = DllOpen("Kernel32.dll")
    $handle = DllCall($dll, "int", "OpenProcess", "dword", 0x0400 + 0x0010, "int", 0, "dword", $PID)
    $ret = DllCall("Psapi.dll", "long", "GetModuleFileNameEx", "long", $handle[0], "int", 0, "ptr", DllStructGetPtr($Path), "long", DllStructGetSize($Path))
    $ret = DllCall($dll, "int", "CloseHandle", "hwnd", $handle[0])
    DllClose($dll)
    Return DllStructGetData($Path, 1)
    EndFunc

    [/autoit]

    Mega

  • BugFix
    Das macht schon Sinn, die ganze Arbeit läuft auf einem Server der verschiedenste Arbeiten selbstständig erledigt.
    Es kann während der Laufzeit zu Fehlen kommen, die sich auf die gerade geöffnete Datei beziehen.
    Den Dateinamen/Pfad benötige ich um mit dem Fehler umgehen zu können ohne dass jemand vor dem PC sitzen muss und bei Bedarf, falls der Server also hängen bleibt, etwas unternimmt^^, dass wär ja nicht machbar;-)
    Die Fehler treten ja nicht immer auf nur manchmal.
    mfg