基礎版(win 模塊)
import win; import process;
process.execute("Notepad");
win.delay(1000);
hwnd = win.find("Notepad"); // 獲取窗口句柄
win.setForeground(hwnd); // 置前顯示
win.show(hwnd, 0x3 /*SW_MAXIMIZE*/); // 最大化
win.delay(1000);
win.close(hwnd); // 發送 WM_CLOSE
進階版(winex 模塊,功能更豐富)
import winex; import process;
process.execute("外部程序路徑");
win.delay(1000);
hwnd = winex.findActivate("外部程序標題"); // 查找並激活
win.show(hwnd, 0x3 /*SW_MAXIMIZE*/); // 最大化
win.delay(1000);
win.show(hwnd, 0x6 /*SW_MINIMIZE*/); // 最小化
win.delay(1000);
winex.close(hwnd); // 發送 WM_CLOSE (優雅關閉)
winex.quit(hwnd); // 發送 WM_QUIT (強制退出進程)
常用 ShowWindow 命令常量
| 常量 | 值 | 作用 |
| SW_HIDE | 0 | 隱藏 |
| SW_SHOWNORMAL | 1 | 正常顯示 |
| SW_MINIMIZE | 6 | 最小化 |
| SW_MAXIMIZE | 3 | 最大化 |
| SW_RESTORE | 9 | 恢復 |
關鍵差異
winex.close → 發送 WM_CLOSE,程序可攔截彈出確認對話框。
winex.quit → 發送 WM_QUIT 線程消息,直接終止消息循環,無法攔截。
win.close 同 winex.close;win.quit 不存在。
實戰建議
- 優先用
findActivate 確保窗口在前台,避免最小化/最大化無視覺反饋。
- 操作間加
win.delay(500~1000) 等待窗口狀態穩定。
- 批量控制多窗口時,配合
winex.findAll 遍歷處理。