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.
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
Ich habe FreeCommander gerade mal installiert – ja, funktioniert auch da.
Die Zeile
muss dann natürlich
heißen, wenn sie denn überhaupt verwendet wird.
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?
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.
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.
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
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 ;-)
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
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
Astrein, jetzt läuft es reibungslos – vielen Dank für die Unterstützung!