2013-03-27 69 views
2

我想創建一個「PolyEdit」腳本。 以下是腳本。如何在不定義熱鍵的情況下自動運行腳本?

!M:: 
IfWinActive, ahk_class TMainForm 
{ 
sleep 2000 
Send Now is the time 
Return 
} 

腳本的目的是:

發送鍵盤和鼠標操作,以我的默認程序打開文本文件。 該默認程序被稱爲「PolyEdit」。

但我需要腳本運行時沒有定義熱鍵。

現在,它是現在的形式,用熱鍵定義,它運行得很好。

我的問題是:

我怎樣才能使腳本自動運行,無需熱鍵被定義?

回答

2

由於阿明已經寫,使用#Persistent後。另外,如果要創建只在特定應用程序處於焦點狀態時處於活動狀態的熱鍵,則可以執行以下操作:在這種情況下,腳本將不再在啓動時執行,只有當您按熱鍵時纔會執行...

#Persistent 
#SingleInstance 
#IfWinActive, ahk_class TMainForm 
!M:: 
    sleep 2000 
    Send Now is the time 
Return 
!n::SoundBeep, 500, 500 
!o::MsgBox, OK 
#IfWinActive 

這樣,所有3個(虛擬)熱鍵將只在您的應用程序處於焦點時處於活動狀態!您可以爲其他應用程序定義相同的熱鍵,只需重複該代碼,但使用#IfWinActive, ahk_class TMainForm行中的其他應用程序的ID即可。

如果你想發送一條消息,每2秒的時候,您的應用程序是活動的執行以下操作:

#Persistent 
#SingleInstance 
SetTimerMatchMode, CheckApp, 2000 
Return 

CheckApp: 
IfWinActive, ahk_class TMainForm 
{ 
    Send, Now is the time 
} 
Return 

如果你希望每次(重新)時激活(把聚焦)執行腳本您應用程序(所以不是每兩秒)然後使用以下內容:

#Persistent 
#installKeybdHook 
#SingleInstance 

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

ShellMessage(wParam) 
{ 
    If (wParam = 4) 
    { 
     IfWinActive ahk_class TMainForm 
     { 
      Send, Now is the time 
     } 
    } 
} 
Return 
1

看看#Persistent這將保持腳本運行。

如果這個指令是存在於任何地方的腳本,該腳本將保持運行的自動執行段(腳本的頂部)完成

相關問題