Re: Middle mouse button - customisable popup menu
Posted: 2020-04-29, 19:30 UTC
I have created a quick and dirty middle mouse button menu tool in AHK, similar to QAP but much much more basic. It consists of two files, MouseMenu.ahk, which is the actual script, which reads in MouseMenuConfig.ahk where all the relevant window classes (ahk_class) and script snippets to execute are defined. The user changes MouseMenuConfig.ahk to his liking.
MouseMenu.ahk:
MouseMenuConfig.ahk (example):
I hope it's more or less self-explanatory.
HTH
Roman
MouseMenu.ahk:
Code: Select all
#Include, MouseMenuConfig.ahk
FileRead, Code, MouseMenuConfig.ahk
MButton::
Found := False
MouseGetPos, MouseX, MouseY, WinUnderMouse
WinActivate, ahk_id %WinUnderMouse%
WinGetClass, ActiveWinClass, ahk_id %WinUnderMouse%
Loop, Parse, Code, `n, `r
If (InStr(A_LoopField, "MenuFunction" . CommandNameDelimiter . "ahk_class" . SpaceReplacement . ActiveWinClass) = 1)
{
If (Found = False)
{
Gui, MouseMenu: New, -Caption
Gui, MouseMenu: Margin, 0, 0
Found := True
}
Gui, MouseMenu: Add, Button, gButtonClicked, % StrReplace(SubStr(A_LoopField, InStr(A_LoopField, CommandNameDelimiter, , , 2) + StrLen(CommandNameDelimiter), -2), SpaceReplacement, " ")
}
Gui, MouseMenu: Show, X%MouseX% Y%MouseY%
Return
#IfWinActive, ahk_class AutoHotkeyGUI
MButton::
Esc::Gui, MouseMenu: Destroy
ButtonClicked()
{
global SpaceReplacement
global CommandNameDelimiter
global WinUnderMouse
global ActiveWinClass
FunctionToCall := % "MenuFunction" . CommandNameDelimiter . "ahk_class" . SpaceReplacement . ActiveWinClass . CommandNameDelimiter . StrReplace(A_GuiControl, " ", SpaceReplacement)
Gui, Destroy
WinActivate, ahk_id %WinUnderMouse%
%FunctionToCall%()
}
Code: Select all
SpaceReplacement := "___"
CommandNameDelimiter := "_#_"
MenuFunction_#_ahk_class___TTOTAL_CMD_#_Edit___Files()
{
Send, {F4}
}
MenuFunction_#_ahk_class___TTOTAL_CMD_#_Copy___Files()
{
Send, {F5}
}
MenuFunction_#_ahk_class___TTOTAL_CMD_#_Move___Files()
{
Send, {F6}
}
MenuFunction_#_ahk_class___MozillaWindowClass_#_Reload()
{
Send, ^r
}
MenuFunction_#_ahk_class___MozillaWindowClass_#_Next___Tab()
{
Send, ^{Tab}
}
HTH
Roman