2012-02-07 35 views
6

Tôi đang sử dụng nhắc nhở còn lại của WorkRave và muốn tắt màn hình khi cửa sổ còn lại xuất hiện. Tôi biết cách tắt nó đi.Cửa sổ Autohotkey xuất hiện sự kiện

Cách tạo sự kiện khi cửa sổ được chỉ định (#IfWinActive ahk_class ...) xuất hiện?

Ngoài ra, tôi có thể liên kết% biểu tượng không? {%} không hoạt động, thay vì những thứ khác.

+0

Romale, Bạn có thể mở cửa sổ gián điệp khi lời nhắc nhở này của WorkRave được kích hoạt không? Bạn mở Windows Spy bằng cách nhấp chuột phải vào biểu tượng AHK. Cửa sổ Spy sẽ luôn ở trên cùng. Khi bạn kích hoạt màn hình WorkRave, bạn sẽ thấy các chi tiết (incl. Ahk_class). Tôi không biết bạn muốn làm gì với dấu%. –

+0

Romale, có may mắn không? –

+0

1. Windows gián điệp không thể bắt đầu làm việc đầu tiên của workrave trên cảnh báo. Nhưng tôi đã bắt nó qua danh sách cửa sổ (ahk_class). Làm thế nào tôi có thể ràng buộc một hành động, khi nó xuất hiện? 2. Ví dụ, không hoạt động: 5 :: {%} % :: {5} –

Trả lời

8

Để có thông báo tức thời về cửa sổ xuất hiện, hãy sử dụng Hook Hook. Điều này đôi khi quá nhanh đến nỗi autohotkey có thể phản ứng trước khi bạn thậm chí thấy cửa sổ.

Móc vỏ được thể hiện trên AutoHotkey Forum.

Một ví dụ với việc sử dụng của bạn (gần như sao chép nguyên văn từ bài trên diễn đàn):

#Persistent 
SetBatchLines, -1 
Process, Priority,, High 

Gui +LastFound 
hWnd := WinExist() 

DllCall("RegisterShellHookWindow", UInt,hWnd) 
MsgNum := DllCall("RegisterWindowMessage", Str,"SHELLHOOK") 
OnMessage(MsgNum, "ShellMessage") 
Return 

ShellMessage(wParam,lParam) 
{ 
    If (wParam = 1) ; HSHELL_WINDOWCREATED := 1 
    { 
     WinGetTitle, Title, ahk_id %lParam% 
     If (Title = "WorkRest") 
      WinClose, ahk_id %lParam% ; close it immideately 
    } 
} 

Nếu bạn muốn sử dụng một biểu tượng% chữ trong một câu lệnh, thoát khỏi nó bằng ký tự thoát AutoHotkey, những backtick `(trên cùng một khóa như ~ trên bàn phím Hoa Kỳ) như vậy:

MsgBox You are 200`% awesome! 
+0

Điều này thật tuyệt vời và hoạt động tuyệt vời! Hãy xem [câu trả lời này] (http://superuser.com/a/266240/16847). Bạn có thể thiết kế kịch bản của bạn để làm điều đó không? I E. phát hiện tất cả các cửa sổ hiện có và xem liệu trước đây có nhìn thấy hay không? – Vijay

0

Romale,

Bạn có thể thử điều này, nhưng vì tôi không sử dụng WorkRave, tôi không thể kiểm tra nó.

; This next line needs to be added at the top of the AHK file, so it will be started as soon as AHK starts. 
; Every 120000 ms, it will launch the "WorkRave:" script to check if a window with WorkRave exists. 
SetTimer, WorkRave,120000 ; Run WorkRaveTester every 2 minutes = 120000 


; Somewhere else in the AHK file..... 
WorkRave: ; This is the label for the WorkRave script 
SetTitleMatchMode, 2 ; 2 = Matches the string WorkRave anywhere in the window title of IfWinExist 
IfWinExist, WorkRave ; When WorkRave window exists 
{ 
    TrayTip, WorkRave, Started ,1 ; Or whatever you want to do here.... 
} 
Return 
Các vấn đề liên quan