2013-03-14 82 views
0

我试图在切换到VMWare播放器时发送输入。这是因为没有按Ctrl-g并使VMWare抓住我的输入。以下是我想出的脚本,但它什么也没有做。这是什么错过了?没有绑定关键字的SendInput

#IfWinActive ahk_class VMPlayerFrame 
{ 
    SendInput, {Ctrl down}g{Ctrl up} 
}                    return 

回答

1

您可以使用#IfWinActive更改热键或热键,但不能创建脚本。

您需要检测窗口更改并对其执行操作。

#SingleInstance 
#installKeybdHook 
#Persistent 

Gui +LastFound 
hWnd := WinExist() 
DllCall("RegisterShellHookWindow", UInt,Hwnd) 
MsgNum := DllCall("RegisterWindowMessage", Str,"SHELLHOOK") 
OnMessage(MsgNum, "ShellMessage") 
Return 

ShellMessage(wParam) 
{ 
    If (wParam = 4 or wParam = 32772) ; Without VMware Player running: wParam = 4, with VMware Player running: wParam = 32772 
    {   
     IfWinActive ahk_class VMPlayerFrame 
     { 
      SendInput, {Ctrl down}g{Ctrl up} 
     } 
    } 
} 
Return 

; Hotkey {Win}+g launches Chrome 
#g::Run "C:\Users\%A_Username%\AppData\Local\Google\Chrome\Application\chrome.exe" 

; Hotkeys {Ctrl}+Nr gives you fractures 
^2:: 
    Send, ½ 
    TrayTip, For 2 Squared,press Ctrl + Shift 2,1,1 
Return 

^3:: 
    Send, ¾ 
    TrayTip, For 3 Cubed,press Ctrl + Shift 3,1,1 
Return 

^4::Send, ¼ 

; HotKeys {Shift}+{Ctrl}+Nr gives you the power 
+^0::Send, ° 
+^1::Send, ¹ 
+^2::Send, ² ; Shift Control [email protected] 
+^3::Send, ³ ; Shift Control 3# 

; Hotstrings mvge, mvgd or mvgf will give you my salutations in various languages. 
:*:mvge::Regards,{Enter}{Enter}Robert Ilbrink 
:*:mvgd::Mit freundlichen Grüßen,{Enter}{Enter}Robert Ilbrink 
:*:mvgf::Salutions,{Enter}{Enter}Robert Ilbrink 
+0

我是AHK的新手。是否可以将此代码与我现有的热键和热键结合使用?我尝试了,但没有成功。 – Forethinker 2013-03-14 08:23:38

+0

如果我理解你是对的,你想知道你是否也可以在同一个脚本中有热键和热键?答案是肯定的。只要您在第一个或第二个“返回”下放置热点。启动时,所有AutoHotKey行都会执行,直到第一个“返回”。通过在第一部分下放置所有其他的hotstrings/hotkeys,确保第一部分可以在启动时执行。这有帮助吗? – 2013-03-14 08:44:09

+0

这个'钩子'被认为是热键或热键吗?我的意思是可以将此解决方案与包含hostrings和热键的现有.ahk文件结合使用。 – Forethinker 2013-03-14 08:49:34