Windows

ALT+Klick: Dateien mit alternativem Programm öffnen

Alternatives Standardprogramm zum Öffnen bestimmter Dateitypen

Öffnen per Doppelklick ist gut und schön, aber wenn es mal ein anderes Programm sein soll, ist der Weg über das Öffnen-mit-Menü ziemlich lästig. Beispiel Bilddateien: Als Standardprogramm bietet sich ein schneller Viewer an, aber wenn man Bilder auch ständig mit Gimp öffnet, wäre es schön, das etwas eleganter zu erledigen – etwa mit ALT+Mausklick:

Modifier für Maustasten

Maustasten nutzt man in der Praxis meist eher selten mit Modifier-Tasten wie STRG, WIN, UMSCHALT, WIN, CAPSLOCK oder eben ALT, allenfalls zum Markieren mehrerer Textstellen oder Dateien. Auch Spiele und Bildbearbeitungsprogramme machen bisweilen davon Gebrauch. Und das ist eigentlich schade! Zumal es auf Tastaturen schon deutlich üblicher ist, einene Tastenkürzel für Programmstarts oder dergleichen einzurichten. Dabei geht das mit ein und demselben Tool – wieder einmal AutoHotkey, wozu wir etliche Artikel haben, inklusive einer Einführung.

Mit AutoHotkey lässt sich so ziemlich alles auf so ziemlich jede Tastenkombination legen. Daher haben wir auch schon einen ganzen Profilmanager für Tastatur und Maus damit gebastelt. Und diese Funktion ließe sich wunderbar in El Tutos Profilmanager integrieren: Per ALT-Mausklick auf eine Bilddatei wird diese mit Gimp geöffnet. Der normale Doppelklick öffnet weiter im Standardprogramm.

ALT+Klick umsetzen

AutoHotkey-Code ist extrem simpel, ein paar Doppelpunkte genügen schon für Textbausteine (zwf::Zur weiteren Verwendung). Beim ALT-Klick braucht es aber doch ein wenig mehr Code, da einige Dinge passieren:

  • Festlegen des Hotkeys.
  • Abfrage, ob es eine Bilddatei ist.
  • Einlesen des Dateinamens samt Pfad.
  • Übergabe des Pfads an Gimp.

Hier zunächst der Code:

; ALT+Klick -> Öffnen mit Gimp
!LButton::
click
clipboard =
Send ^c
ClipWait, 1
If clipboard contains png,jpg,jpeg,bmp,ico,xcf,psd
    run "C:\Program Files\GIMP 2\bin\gimp-2.10.exe" %clipboard%
Else
    MsgBox Falsches Dateiformat.
return

Der Reihe nach:

  • !LButton: Die Hotkey-Definition, ALT (!) plus linke Maustaste.
  • click: Es wird ein einfacher Mausklick (auf eine Datei) ausgeführt, um sie zu markieren.
  • clipboard =: Die Zwischenablage wird geleert.
  • Send ^c: STRG+C wird gesendet, was den Dateinamen samt Pfad der angeklickten Datei in die Zwischenablage kopiert.
  • ClipWait, 1: Die Zwischenablage wartet maximal 1 Sekunde auf Inhalt – sonst bricht das Skript ab.
  • If clipboard contains: Prüfen, ob eine der Dateiendungen in der Zwischenablage vorkommt.
  • run: Falls die If-Abfrage bejaht wird, wird Gimp ausgeführt – und der Pfad der Datei über die Variable %clipboard% mitgegeben.
  • Else: Falls die If-Abfrage verneint wird, wird ein Dialog via MsgBox mit Infos gestartet.
  • return: Beendet die Funktion.

Den Else-Part mit der MsgBox könnt Ihr natürlich streichen, aber zum Testen oder für die Gewöhnungszeit ist das eine schöne Hilfe. Wenn Ihr das Skript nun startet, könnt Ihr anschließend im Explorer mit gedrückter ALT-Taste Dateien anklicken und entweder öffnen sie sich in Gimp oder Ihr bekommt einen Hinweisdialog zu sehen.

Universeller Spaß

Und jetzt noch als kleiner Denkanstoß: Warum sich nur um Bildformate kümmern? Warum nicht Textdateien ALTernativ in Office statt im Texteditor öffnen? Warum nicht Videodateien mit VLC statt mit dem Windows Media Player? Und die Funktion vielleicht auf den Windows-Explorer beschränken? Die neuen Zeilen sind weiter eingerückt:

; ALT+Klick -> Öffnen mit Gimp
        #IfWinActive ahk_exe explorer.exe
!LButton::
click
clipboard =
Send ^c
ClipWait, 1
If clipboard contains png,jpg,jpeg,bmp,ico,xcf,psd
    run "C:\Program Files\GIMP 2\bin\gimp-2.10.exe" %clipboard%
        Else if clipboard contains txt
            run "C:\Program Files\LibreOffice\program\swriter.exe" %clipboard%
        Else if clipboard contains mkv,avi,flv,mp4
            run "D:\Program Files\VideoLAN\VLC\vlc.exe" %clipboard%     
Else
    MsgBox Falsches Dateiformat.
return

Ihr könnt einfach beliebig viele Else if einfügen und schon habt Ihr eine universelle Alternative zum Doppelklick und zum Standard-Standardprogramm. Und mit #IfWinActive beschränkt Ihr die Funktion auf den Explorer.

Ihr könnt mit AutoHotkey natürlich noch viel mehr machen, schließlich lassen sich alle Modifier-Tasten getrennt oder in Kombination nutzen und alle Maustasten ansprechen – und plötzlich hat die Maus 20, 30 unterschiedliche Funktionen! Außerdem können sich diese Funktionen auch noch von Programm zu Programm unterscheiden. Mehr dazu findet Ihr bei El Tutos Profilmanager.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

10 Kommentare

  1. Hallo Mirco,

    das ist eine super Erleichterung für die alltägliche Arbeit. Habe viele Dateien, die ich mit unterschiedlichen Programmen öffnen musss, um sie zu bearbeiten.
    Geht das auch z.b. im FreeCommander?

    Viele Grüße
    Elli

    1. Ich habe FreeCommander gerade mal installiert – ja, funktioniert auch da.

      Die Zeile

      #IfWinActive ahk_exe explorer.exe
      

      muss dann natürlich

      #IfWinActive ahk_exe freecommander.exe
      

      heißen, wenn sie denn überhaupt verwendet wird.

      1. Nach Ausführung wird bei mir leider immer die Massage-Box im FreeCommander angezeigt. Im Explorer funktioniert es einwandfrei.

        ; ALT+Klick -> Öffnen mit Gimp
        #IfWinActive ahk_exe freecommander.exe
        !LButton::
        click
        clipboard =
        Send ^c
        ClipWait, 1
        If clipboard contains png,jpg,jpeg,bmp,ico,xcf,psd
        run „C:\Program Files\GIMP 2\bin\gimp-2.10.exe“ %clipboard%
        Else if clipboard contains txt
        run „C:\Program Files\LibreOffice\program\swriter.exe“ %clipboard%
        Else if clipboard contains mkv,avi,flv,mp4
        run „D:\Program Files\VideoLAN\VLC\vlc.exe“ %clipboard%
        Else
        MsgBox Falsches Dateiformat.
        return

        Hast Du eine Idee woran das liegen könnte?

      2. Also das klingt jetzt gaga, aber es hat 20 mal hintereinander genau so funktioniert: Es schlägt fehl und die Message-Box kommt, auch x mal hintereinander. Sobald ich aber von der linken in die rechte Seite wechsle, oder umgekehrt, funktioniert es fortan. Ziemlich obskur, aber hier reproduzierbar. Insofern: Versuch es mal in dem einen Pane dann in dem anderen.

    2. Das gibt es nicht. Genau so ist es. Vielen Dank für die Auseinandersetzung mit dem Problem. Wäre auf die Idee nie gekommen. Verrückte Sache.

  2. hallo.
    ich bin ein blind. in autohotkey 2.0.10 kann ich nicht
    diese script – Dateien mit alternativem Programm öffnen,
    benutzen. besonders diese funktion:
    If clipboard contains.
    bitte schreiben Sie mir wie man in autohotkey 2.0.10 diese script schreiben kann.
    mit freundlichen Grüßen
    Amir Alizadeh

  3. PS.
    Vielleicht noch ein klitzekleiner Hinweis: ALT + linke Maustaste führt oft dazu das Script auszuführen, wenn man mit ALT+Tab das Fenster wechselt, welches ja häufig durch die Maus ausgewählt wird. Evtl. wäre die Windowstaste praktische ;-)

  4. Hallo Mirco,

    nach langem Suchen endlich die Lösung, die mein Arbeitsleben vereinfacht – vielen Dank dafür :-) !

    Allerdings scheint es – bei mir zumindest – nur zu funktionieren, wenn weder im Dateinamen noch im Dateipfad Leerzeichen enthalten sind. Offenbar interpretiert Excel alles bis zum ersten Leerzeichen der Zwischenablage als eine Datei und alles danach ebenfalls. Ersetze ich die Leerzeichen durch _ funktioniert es tadellos.

    Ist dir dieses Problem bekannt und hättest du gar eine Lösungsidee dafür?

    Nochmals vielen Dank und beste Grüße

    Jörg Meyer

    1. Hallo Jörg,

      das ist kein Problem von Excel, sondern vom Kommandozeileninterpreter, der von AHK aufgerufen wird. Dieser wertet die übergebenen Parameter aus, die durch Leerzeichen getrennt werden. Wenn nun irgendwo im Pfad ein Leerzeichen ist, dann ist das für den Interpreter die Trennung zum nächsten Parameter.
      Die Lösung ist denkbar einfach: Die übergebenen Parameter müssen in Anführungszeichen gesetzt werden, genauso wie es schon beim Programmpfad gemacht wird:
      run „C:\Windows\System32\mspaint.exe“ „%clipboard%“
      Nun sollte es funktionieren…
      Grüße,
      Thomas Weber

      1. Astrein, jetzt läuft es reibungslos – vielen Dank für die Unterstützung!

Schreibe einen Kommentar zu Jörg Meyer Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.