2013-03-29 92 views
2

下面的腳本工作正常。定時器只運行一次

它每4秒向KingSoft Writer發送鼠標點擊 。 但是,當我將計時器長度更改爲-4000 而不是4000時,計時器將只運行一次 腳本不再運行一次。 我不再能夠發送鼠標點擊 KingSoft作家。 我在做什麼錯?

#Persistent 
#SingleInstance 


SetTimer, CheckApp, 4000 
Return 


CheckApp: 
IfWinActive, ahk_class QWidget 
{ 
    sleep 2000 
Click 486, 15 
Click 570, 93 
} 
Return 

回答

2

在我回答這個問題之前。你會如此友善回到前一個問題,並通過點擊WHITE複選標記將它變成綠色來標記你在那裏收到的答案。

我曾經嘗試過負值並且對結果不滿意,所以我決定關閉計時器而不是使用負值。

#Persistent 
#SingleInstance 
SetTimer, CheckApp, 4000 
Return 

CheckApp: 
IfWinActive, ahk_class QWidget 
{ 
    SetTimer, CheckApp, Off  
    Click 486, 15 
    Click 570, 93 
} 
Return 

我刪除了你的睡眠,2000年加入該睡眠命令塊AHK的50%的時間(睡眠50%),並增加了沒什麼用處。它甚至有可能讓另一個應用程序在2秒鐘內竊取焦點,因此鼠標點擊可能會轉到另一個應用程序... 您是否必須使用鼠標點擊或使用鍵盤快捷鍵。菜單移動或展開/收縮時,鼠標位置往往不可靠。

更新

#Persistent 
#SingleInstance 
Return ; Prevent the [Win]+w from executing on startup of script. 

#w:: ; [Win]+w launches PolyEdit, waits for window and sends two mouse clicks. 
Run, path to the PolyEdit window.exe 
WinWaitActive, ahk_class QWidget 
Sleep, 1000 
Click 486, 15 
Click 570, 93 
Return 

現在你可以把窗戶上的AHK腳本的開始菜單和啓動PolyEdit通過[運] + W(或您定義的任何其他關鍵...)

更新2

不知道你爲什麼要這樣做,因爲啓動應用程序需要一個操作(點擊一個圖標或按快捷鍵),這可以用來觸發腳本。現在你必須不斷地在後臺運行檢查。您可以創建一個看起來像KingSoft的圖標,但實際上是一個ahk腳本。

但是,你在這裏!

#Persistent 
#SingleInstance 
SetTimer, CheckApp, 400 
Return 
InitiateKS := true 

CheckApp: 
IfWinExist, ahk_class QWidget 
{ 
    If InitiateKS 
    { 
     InitiateKS := false 
     WinActivate, ahk_class QWidget 
     TrayTip, KingSoft, Started, 1 
     ;Click 486, 15 
     ;Click 570, 93 
    } 
} 
Else ; if no KingSoft is running 
{ 
     InitiateKS := true 
} 
Return 
+0

我按照您的要求將白色複選標記變爲綠色。 我不知道這個功能。 感謝您的優秀回覆! 我使用下面的腳本目前正在接近一個解決方案: #Persistent WinWaitActive,ahk_class TMainForm 發送現在是時候 返回 上面的腳本作品。但它缺乏一個主要特點。 我需要讓它工作,當我關閉 當前PolyEdit窗口和 打開第二個PolyEdit窗口。 現在,這沒有發生。 現在我必須在 打開第二個PolyEdit窗口之前重新加載腳本。 我不想重新加載腳本。這是我迷失的地方。 – user2216119

+0

在這種情況下,爲什麼不使用ahk腳本以熱鍵啓動PolyEdit窗口。請參閱上面的修改腳本 –

+0

我同意羅伯特。我非常感謝您對如何接受答案的意見。我同意你的100%。關於使用熱鍵啓動腳本。是的,這是有效的。但我正在尋找一個沒有熱鍵的腳本。我是否認爲沒有? – user2216119