Mouse 自动热键切换鼠标左键和右键

Mouse 自动热键切换鼠标左键和右键,mouse,autohotkey,Mouse,Autohotkey,我是windows8用户,我只想在Irfanview(图片查看器应用程序)中切换左右按钮,因为默认的平移总是鼠标左键,但在irfan视图中是鼠标右键,所以我想每当我按住鼠标左键时,它都会发送按住鼠标右键。我尝试过这个宏:它在Irfanview中工作,但也会影响windows桌面,有时还会影响其他一些程序 #NoEnv #SingleInstance, Force #Persistent #InstallMouseHook #ifWinActive ahk_class IrfanView LBu

我是windows8用户,我只想在Irfanview(图片查看器应用程序)中切换左右按钮,因为默认的平移总是鼠标左键,但在irfan视图中是鼠标右键,所以我想每当我按住鼠标左键时,它都会发送按住鼠标右键。我尝试过这个宏:它在Irfanview中工作,但也会影响windows桌面,有时还会影响其他一些程序

#NoEnv
#SingleInstance, Force
#Persistent
#InstallMouseHook

#ifWinActive ahk_class IrfanView
LButton::RButton
RButton::LButton

#IfWinActive ahk_class FullScreenClass
LButton::RButton
RButton::LButton
有人能给我一些建议吗,也许是有条件的


高级感谢。

您看到的行为很可能是由于您选择的一个窗口已激活,而您正试图单击另一个窗口

解决方法是让热键使用鼠标所在的窗口类,而不是活动窗口。我在下面介绍了一个函数及其使用方法:

#If (MouseIsOverClass("IrfanView") or MouseIsOverClass("FullScreenClass")) and !MouseIsOverControl("IrfanViewerClass1")
    LButton::RButton
    RButton::LButton

MouseIsOverClass(WinClass) 
{
    MouseGetPos,,,win
    WinGetClass,class,ahk_id %win%
    return (class = winClass)
}

MouseIsOverControl(winControl)
{
    MouseGetPos, , , , Control
    return (Control = winControl)
}
编辑:请注意,
\If
仅在AHK\u L中受支持


您看到的行为很可能是由于您选择的一个窗口被激活,而您正试图单击另一个窗口

解决方法是让热键使用鼠标所在的窗口类,而不是活动窗口。我在下面介绍了一个函数及其使用方法:

#If (MouseIsOverClass("IrfanView") or MouseIsOverClass("FullScreenClass")) and !MouseIsOverControl("IrfanViewerClass1")
    LButton::RButton
    RButton::LButton

MouseIsOverClass(WinClass) 
{
    MouseGetPos,,,win
    WinGetClass,class,ahk_id %win%
    return (class = winClass)
}

MouseIsOverControl(winControl)
{
    MouseGetPos, , , , Control
    return (Control = winControl)
}
编辑:请注意,
\If
仅在AHK\u L中受支持


只有当IrfanView处于活动状态且您单击IrfanView窗口外的某个位置(例如,其下方的桌面)时,才会发生这种情况吗?这是我唯一可以重现这种行为的场景。只有当IrfanView处于活动状态且您单击IrfanView窗口外的某个位置(例如,其下方的桌面)时,才会发生这种情况吗?这是我唯一可以重现这种行为的场景。我喜欢这个解决方案,也非常可重用。你可以提到,
#If
仅适用于AHK#L。谢谢,伙计,只是有一个小问题,如果我打开iFanView,我可以用人民币关闭它的窗口,但我接受这一点,谢谢。你可能可以使用解决这个问题,并将其添加到一个
#If
条件中。如果有帮助的话,请接受我的回答。嗨,埃利奥特,老兄,你能发最后一行吗?我发现有人必须用人民币移动iFanView窗口,老兄,我从AutoIt3间谍那里得到的是…\ahk_类IrfanView(这是主窗口,我用它来移动IrfanView窗口并关闭它,我不想在这里应用LMB/RMB)ClassNN:IrfanViewerClass1(每当我将鼠标放在图片上时,就会出现此消息,因此我认为这里是我想要应用LMB/RMB更改的地方,也是在FullScreenCLass中)感谢Advanced man。虽然这不是一行,但我在鼠标位于
IrfanViewerClass1
控件上时添加了异常。我喜欢这个解决方案,也非常可重复使用。你可以提到,
#If
仅适用于AHK#L。谢谢,伙计,只是有一个小问题,如果我打开iFanView,我可以用人民币关闭它的窗口,但我接受这一点,谢谢。你可能可以使用解决这个问题,并将其添加到一个
#If
条件中。如果有帮助的话,请接受我的回答。嗨,埃利奥特,老兄,你能发最后一行吗?我发现有人必须用人民币移动iFanView窗口,老兄,我从AutoIt3间谍那里得到的是…\ahk_类IrfanView(这是主窗口,我用它来移动IrfanView窗口并关闭它,我不想在这里应用LMB/RMB)ClassNN:IrfanViewerClass1(每当我将鼠标放在图片上时,都会显示此消息,因此我认为这里是我想要应用LMB/RMB更改的地方,也是在FullScreenCLass中)感谢Advanced man。虽然这不是一行,但我在鼠标位于
IrfanViewerClass1
控件上时添加了例外。