AutoHotkey: Popup-Menü für Buttons oder F4: Unterschied zwischen den Versionen
Mbirth (Diskussion | Beiträge) (Initialversion, einige Absätze leer, da sonst Serverfehler) |
Mbirth (Diskussion | Beiträge) K (→Links) |
||
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 140: | Zeile 140: | ||
Eine Beispiel-INI-Datei sieht so aus: | Eine Beispiel-INI-Datei sieht so aus: | ||
<code><nowiki>[Menu] | |||
;Maximum number to parse, starting at 1 | |||
;Empty values are ignored. | |||
MaxItem=99 | |||
Title=blafasel | |||
1=TE1|Test entry | |||
2=- | |||
3=TES|Test sub | |||
4=TE3|Test sub2 | |||
[TE1] | |||
Cmd=notepad.exe %1 | |||
;Checked=1 | |||
; (omit following to start in current path) | |||
StartPath=C:\TEMP | |||
; StartMode=(Max|Min|Hide) | |||
; (omit following to start normally) | |||
StartMode=Max | |||
[TES] | |||
;Checked=1 | |||
MaxItem=1 | |||
1=TE2|Test2 entry | |||
[TE2] | |||
Cmd=explorer.exe | |||
[TE3] | |||
MaxItem=1 | |||
1=TE2|Test2 entry again</nowiki></code> | |||
==== Ausführliche Beschreibung ==== | ==== Ausführliche Beschreibung ==== | ||
Zeile 146: | Zeile 175: | ||
===== Menüs ===== | ===== Menüs ===== | ||
Der Abschnitt <code><nowiki>[Menu]</nowiki></code> enthält das Hauptmenü, welches nach dem Drücken des Knopfes bzw. F4 erscheint. Jedes Menü enthält ein oder mehrere Einträge mit einem numerischen Schlüssel von 1 bis n. (Format: <code>Schlüssel=Wert</code>.) Die Numerierung muss nicht kontinuierlich sein, aber der Wert von <code>MaxItem</code> muss dem des höchsten Schlüssel entsprechen (oder noch höher), d.h. jeder Eintrag mit einem Schlüssel höher als <code>MaxItem</code> wird nicht angezeigt. Auch ist zu beachten, dass alle Einträge in der Reihenfolge der Schlüssel angezeigt werden, angefangen vom kleinsten bis zum höchsten. | |||
Jedes Menü kann einen eigenen Titel haben, welcher durch den Schlüssel <code>Title</code> festgelegt wird. Dieser Titel wird fett über den Einträgen angezeigt. | |||
Jeder Menüpunkt hat das Format <code>x=Abschnitt|Titel</code> wobei <code>x</code> der numerische Schlüssel, <code>Abschnitt</code> der diesen Eintrag näher definierende Abschnitt und <code>Titel</code> der im Menü angezeigte Text ist. | |||
Eine Trennlinie wird durch <code>x=-</code> definiert. | |||
Programm- und Untermenü-Abschnitte können auch noch <code>Checked=1</code> enthalten, um ein Häkchen vor dem übergeordneten Menüpunkt anzuzeigen. | |||
===== Programme ===== | ===== Programme ===== | ||
Um ein zu startendes Programm zu definieren, wird der Syntax <code>Cmd=programm.exe /Parameter</code> verwendet. Man kann die im "Parameter"-Feld des Knopfes angegeben Parameter mit z.B. folgender Zeile verwenden: <code>Cmd=programm.exe %3</code>, welche programm.exe mit dem dritten bei den Knopf-Optionen angegebenen Parameter starten würde. | |||
Um ein Häkchen vor dem Menüeintrag anzuzeigen, kann man <code>Checked=1</code> benutzen. | |||
Zusätzlich kann man noch <code>StartPath=c:\WINDOWS</code> setzen, um das Programm in diesem Ordner zu starten und <code>StartMode=Max</code> um es maximiert zu starten, <code>StartMode=Min</code> für minimiert oder <code>StartMode=Hide</code> um es versteckt zu starten bzw. das Programmfenster unsichtbar zu lassen. Wenn man <code>StartPath</code> weglässt, wird das aktuelle Verzeichnis benutzt. Lässt man <code>StartMode</code> weg, wird das Programm normal gestartet. | |||
== Links == | |||
* [http://www.autohotkey.com/forum/viewtopic.php?t=5658 AutoHotkey-Forum (dieses Script, Englisch)] | |||
Zurück zu [[AutoHotkey]] | Zurück zu [[AutoHotkey]] | ||
[[en:AutoHotkey:_Popup_menu_for_button_bar_or_F4]] | [[en:AutoHotkey:_Popup_menu_for_button_bar_or_F4]] |
Aktuelle Version vom 13. Dezember 2005, 14:05 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:
[Menu]
;Maximum number to parse, starting at 1
;Empty values are ignored.
MaxItem=99
Title=blafasel
1=TE1|Test entry
2=-
3=TES|Test sub
4=TE3|Test sub2
[TE1]
Cmd=notepad.exe %1
;Checked=1
; (omit following to start in current path)
StartPath=C:\TEMP
; StartMode=(Max|Min|Hide)
; (omit following to start normally)
StartMode=Max
[TES]
;Checked=1
MaxItem=1
1=TE2|Test2 entry
[TE2]
Cmd=explorer.exe
[TE3]
MaxItem=1
1=TE2|Test2 entry again
Ausführliche Beschreibung
Menüs
Der Abschnitt [Menu]
enthält das Hauptmenü, welches nach dem Drücken des Knopfes bzw. F4 erscheint. Jedes Menü enthält ein oder mehrere Einträge mit einem numerischen Schlüssel von 1 bis n. (Format: Schlüssel=Wert
.) Die Numerierung muss nicht kontinuierlich sein, aber der Wert von MaxItem
muss dem des höchsten Schlüssel entsprechen (oder noch höher), d.h. jeder Eintrag mit einem Schlüssel höher als MaxItem
wird nicht angezeigt. Auch ist zu beachten, dass alle Einträge in der Reihenfolge der Schlüssel angezeigt werden, angefangen vom kleinsten bis zum höchsten.
Jedes Menü kann einen eigenen Titel haben, welcher durch den Schlüssel Title
festgelegt wird. Dieser Titel wird fett über den Einträgen angezeigt.
Jeder Menüpunkt hat das Format x=Abschnitt|Titel
wobei x
der numerische Schlüssel, Abschnitt
der diesen Eintrag näher definierende Abschnitt und Titel
der im Menü angezeigte Text ist.
Eine Trennlinie wird durch x=-
definiert.
Programm- und Untermenü-Abschnitte können auch noch Checked=1
enthalten, um ein Häkchen vor dem übergeordneten Menüpunkt anzuzeigen.
Programme
Um ein zu startendes Programm zu definieren, wird der Syntax Cmd=programm.exe /Parameter
verwendet. Man kann die im "Parameter"-Feld des Knopfes angegeben Parameter mit z.B. folgender Zeile verwenden: Cmd=programm.exe %3
, welche programm.exe mit dem dritten bei den Knopf-Optionen angegebenen Parameter starten würde.
Um ein Häkchen vor dem Menüeintrag anzuzeigen, kann man Checked=1
benutzen.
Zusätzlich kann man noch StartPath=c:\WINDOWS
setzen, um das Programm in diesem Ordner zu starten und StartMode=Max
um es maximiert zu starten, StartMode=Min
für minimiert oder StartMode=Hide
um es versteckt zu starten bzw. das Programmfenster unsichtbar zu lassen. Wenn man StartPath
weglässt, wird das aktuelle Verzeichnis benutzt. Lässt man StartMode
weg, wird das Programm normal gestartet.
Links
Zurück zu AutoHotkey