AutoHotkey: Popup-Menü für Buttons oder F4: Unterschied zwischen den Versionen
Mbirth (Diskussion | Beiträge) K (→Übersicht: Screenshot) |
Mbirth (Diskussion | Beiträge) (Initialversion, einige Absätze leer, da sonst Serverfehler) |
||
Zeile 124: | Zeile 124: | ||
== Gebrauch == | |||
=== Vorbereitungen === | |||
Um den Gebrauch etwas einfacher zu gestalten, ist es empfehlenswert, das Script vorher mit ahk2exe zu kompilieren. (ahk2exe ist beim [http://www.autohotkey.com/download/ AutoHotkey download] dabei.) Wenn jetzt das kompilierte Script z.B. ClickMenu.exe heißt, weisen Sie diese ClickMenu.exe einem neuen Button in der Knopfleiste des Total Commander zu. Tragen Sie alle benötigten Parameter (bis zu neun) in das "Parameter"-Feld des Knopfes ein. Sie können diese später in der ClickMenu.ini mit %1..%9 benutzen. Alternativ können Sie ClickMenu.exe aber auch der F4-Taste zuweisen, um eine Auswahl an verschiedenen Editoren zu erhalten. | |||
=== Konfiguration === | |||
Die gesamte Konfiguration geschieht durch eine INI-Datei, '''welche den gleichen Basisnamen haben muss wie das Script''' bzw. das Kompilat. In diesem Beispiel muss die INI-Datei also ClickMenu.ini genannt werden. | |||
==== Beispiel-Konfigurationsdatei ==== | |||
Eine Beispiel-INI-Datei sieht so aus: | |||
==== Ausführliche Beschreibung ==== | |||
===== Menüs ===== | |||
===== Programme ===== | |||
Zurück zu [[AutoHotkey]] | |||
[[en:AutoHotkey:_Popup_menu_for_button_bar_or_F4]] | [[en:AutoHotkey:_Popup_menu_for_button_bar_or_F4]] |
Version vom 13. Dezember 2005, 13:41 Uhr
Übersicht
Dieses Script zeigt ein Popup-Menü mit in einer Konfigurationsdatei definierten Programmen an. Nach Klick auf einen Eintrag wird das gewählte Programm mit den definierten Parametern gestartet. Dies ist nützlich, um verschiedene externe Programme auf einen einzigen Button in der Knopfleiste zu legen oder um nach Drücken von F4 mehrere Editoren zur Auswahl zu haben.
Quelltext
#NoTrayIcon
;#ErrorStdOut
SplitPath A_ScriptFullPath, null, IniDir, null, IniFile, null
IniFile = %IniDir%\%IniFile%.ini
IfNotExist %IniFile%
{
MsgBox Kann %IniFile% nicht finden.
ExitApp
}
ProcessMenu("Menu")
Menu Menu, Show
Exit
SplitFirst(ByRef OutLeft, ByRef OutRight, InpText, InpSep)
{
StringGetPos SepPos, InpText, %InpSep%
If (SepPos >= 0)
{
StringLeft OutLeft, InpText, %SepPos%
RemChars := StrLen(InpText)-SepPos-1
StringRight OutRight, InpText, %RemChars%
}
Else
{
OutLeft := InpText
OutRight := ""
}
}
ProcessMenu(Menu)
{
global IniFile
IniRead MenuTitle, %IniFile%, %Menu%, Title
If (MenuTitle <> "ERROR")
{
Menu %Menu%, Add, %MenuTitle%, AboutBox
Menu %Menu%, Default, %MenuTitle%
; Menu %Menu%, Disable, %MenuTitle%
Menu %Menu%, Add
}
IniRead Count, %IniFile%, %Menu%, MaxItem, 0
Loop %Count%
{
IniRead, CurItem, %IniFile%, %Menu%, %A_Index%
If (CurItem = "-")
Menu %Menu%, Add
Else If (CurItem <> "ERROR")
{
SplitFirst(CurID, CurTitle, CurItem, "|")
If (CurTitle = "")
CurTitle := CurID
IniRead IsSub, %IniFile%, %CurID%, MaxItem, 0
If (IsSub = 0)
{
Menu %Menu%, Add, %CurTitle%, ProcessEvent
IniRead CurCmd, %IniFile%, %CurID%, Cmd
If (CurCmd = "ERROR")
Menu %Menu%, Disable, %CurTitle%
}
else
{
ProcessMenu(CurID)
Menu %Menu%, Add, %CurTitle%, :%CurID%
}
IniRead IsChecked, %IniFile%, %CurID%, Checked, 0
If (IsChecked = 1)
Menu %Menu%, Check, %CurTitle%
}
}
Return
}
ProcessEvent:
IniRead Count, %IniFile%, %A_ThisMenu%, MaxItem, 0
Loop %Count%
{
IniRead, CurItem, %IniFile%, %A_ThisMenu%, %A_Index%
If (CurItem <> "ERROR")
{
SplitFirst(CurID, CurTitle, CurItem, "|")
If (CurTitle = "")
CurTitle := CurID
If (CurTitle = A_ThisMenuItem)
{
IniRead Cmd, %IniFile%, %CurID%, Cmd
If (Cmd <> "ERROR")
{
empty := ""
IniRead TargDir, %IniFile%, %CurID%, StartPath, %empty%
IniRead StartMode, %IniFile%, %CurID%, StartMode, %empty%
Loop 9
{
CurPar := %A_Index%
StringReplace Cmd, Cmd, `%%A_Index%, %CurPar%
}
; Use RunWait for ex. Total Commander, where the starting app has to know
; whether the launched app is still running. Otherwise use Run.
RunWait %Cmd%, %TargDir%, %StartMode%, PID
}
}
}
}
Return
AboutBox:
MsgBox 4160, Über ClickMenu..., ClickMenu zeigt ein Popup-Menü mit Einträgen, die aus einer INI-Datei ausgelesen werden und startet das gewählte Programm.`n`nMade in 2005 by Markus Birth <mbirth at webwriters.de>
Return
Gebrauch
Vorbereitungen
Um den Gebrauch etwas einfacher zu gestalten, ist es empfehlenswert, das Script vorher mit ahk2exe zu kompilieren. (ahk2exe ist beim AutoHotkey download dabei.) Wenn jetzt das kompilierte Script z.B. ClickMenu.exe heißt, weisen Sie diese ClickMenu.exe einem neuen Button in der Knopfleiste des Total Commander zu. Tragen Sie alle benötigten Parameter (bis zu neun) in das "Parameter"-Feld des Knopfes ein. Sie können diese später in der ClickMenu.ini mit %1..%9 benutzen. Alternativ können Sie ClickMenu.exe aber auch der F4-Taste zuweisen, um eine Auswahl an verschiedenen Editoren zu erhalten.
Konfiguration
Die gesamte Konfiguration geschieht durch eine INI-Datei, welche den gleichen Basisnamen haben muss wie das Script bzw. das Kompilat. In diesem Beispiel muss die INI-Datei also ClickMenu.ini genannt werden.
Beispiel-Konfigurationsdatei
Eine Beispiel-INI-Datei sieht so aus:
Ausführliche Beschreibung
Menüs
Programme
Zurück zu AutoHotkey