如何区分左键单击和左键单击并拖动操作?

时间:2013-03-25 15:37:41

标签: autohotkey

我有一个应用程序(Royal TS),它在应用程序的主窗口中嵌入了PuTTY会话。但是,如果另一个应用程序的窗口遮挡了嵌入的PuTTY会话,并且我单击嵌入的PuTTY会话,则皇家TS窗口不会出现在前面。

因此,我尝试使用以下AutoHotKey脚本解决此问题:

LButton::                             ; Detect left mouse button click
MouseGetPos, xpos, ypos, win_id       ; Get mouse position and window ID 
WinGetTitle, title, ahk_id %win_id%   ; Get window title
WinGetClass, class, ahk_id %win_id%   ; Get window class

if class=PuTTY                        ; If clicked in an emmbeded PuTTY window...
{                                     ;
  IfWinExist, Royal TS                ; ...and Royal TS is running...
  {                                   ;
    WinActivate                       ; ...bring Royal TS to the front
  }                                   ;
}                                     ;
else                                  ; Else, it wasn't a PuTTY window clicked...
{                                     ;
  MouseClick, left, xpos, ypos        ; ...just pass mouse button click through
}                                     ;
return                                ;

这很好......直到某一点。当我尝试单击并按住任何应用程序的标题栏以拖动它(或调整应用程序窗口的大小)脚本运行并拦截我的左按钮但是拖动或调整窗口大小的意图丢失时,会出现问题因为MouseClick命令指向脚本的末尾。

如何区分左键单击和左键单击以及拖动操作?

1 个答案:

答案 0 :(得分:0)

将您的LButton::更改为~LButton::并删除else声明。

~将使鼠标左键正常工作,但仍会运行代码。