WinWaitActive tạm dừng (wait) tiến trình hiện tại của script cho tới khi cửa sổ được chỉ định trở thành cửa sổ active (có focus).
Nếu cửa sổ xuất hiện/được active trước khi timeout — hàm trả về thông tin (HWND)
Nếu hết thời gian chờ thì trả về kết quả báo thất bại (timeout).
WinWait — chờ cửa sổ tồn tại (xuất hiện) nhưng chưa chắc đã active.
WinWaitActive — chờ cửa sổ có focus (active).
WinActivate — cố gắng kích hoạt một cửa sổ; thường không cần gọi WinActivate trước WinWaitActive vì WinActivate đã có vài lần thử tự động.
WinWaitActive(WinTitle[, WinText := "", Seconds := 0, ExcludeTitle := "", ExcludeText := ""])
Giải thích tham số chính:
WinTitle — chuỗi nhận diện cửa sổ (có thể là một phần tên, ahk_exe:, ahk_class:, hoặc ký hiệu đặc biệt như "A" cho cửa sổ đang active).
WinText — (tùy chọn) một đoạn text xuất hiện trong cửa sổ.
Seconds — thời gian chờ (giây). Nếu để trống hoặc 0 thường là chờ vô thời hạn (hoặc hành vi tri nhỏ — xem docs).
ExcludeTitle/ExcludeText — loại trừ cửa sổ có chứa chuỗi đó.
Trả về HWND của cửa sổ nếu thành công (một số tài liệu v2 ghi rõ: trả HWND; nếu timeout trả 0). Nếu kết quả là 0, coi là timeout / không tìm thấy. Bạn có thể dùng điều kiện if !winId để kiểm tra.
Run "notepad.exe"
win := WinWaitActive("Untitled - Notepad", "", 5) ; chờ tối đa 5 giây
if !win
MsgBox "WinWaitActive timed out."
else
MsgBox "Found Notepad. HWND = " win
Run "C:\Program Files\Google\Chrome\Application\chrome.exe"
if !WinWaitActive("ahk_exe chrome.exe", "", 10)
{
MsgBox "Chrome không active trong 10s — thoát hoặc thử lại."
return
}
; tiếp tục thao tác khi Chrome active
Chờ một hộp thoại có thể tên thay đổi (dùng class):
; đợi cửa sổ có class WindowClassName active
win := WinWaitActive("[CLASS:WindowClassName]", "", 6)
if !win
MsgBox "Timed out"
else
; xử lý tiếp
Đây là lệnh cấu hình giúp AutoHotkey biết cách so khớp tiêu đề cửa sổ khi bạn dùng các lệnh liên quan đến cửa sổ (ví dụ: WinWait, WinWaitActive, WinActivate, IfWinExist, …).
Nói cách khác: Khi bạn viết WinActivate "Notepad", thì AutoHotkey phải biết so sánh thế nào với tiêu đề cửa sổ thực tế (Untitled - Notepad hay Ghi chú - Notepad).
Trong AutoHotkey v2, SetTitleMatchMode có 3 chế độ chính:
SetTitleMatchMode 1 (Default): So khớp từ bắt đầu của tiêu đề.
Ví dụ:
WinActivate "Untitled" ; sẽ khớp "Untitled - Notepad"
Chú ý gặp nhiều: Khi trong code không có dòng lệnh SetTitleMatchMode thì mặc định của chương trình là SetTitleMatchMode 1 (Default), nên có lúc nhìn thấy có lúc không.
SetTitleMatchMode 2: So khớp bất kỳ vị trí nào trong tiêu đề.
Ví dụ:
WinActivate "Notepad" ; sẽ khớp "Untitled - Notepad"
SetTitleMatchMode 3: So khớp chính xác toàn bộ tiêu đề.
Ví dụ:
WinActivate "Untitled - Notepad" ; chỉ khớp đúng như vậy
Tìm kiếm:
Hướng dẫn AutoHotKey và một số kỹ thuật code quan trọng khi làm việc với cửa số để tự động hóa thao tác tự động