# WinEvent Class
1. 性質:抽象類
2. 開發目的:ShellHook(窗口鉤子),讓窗口切換、建立等等,十幾種窗口操作本身作為觸發器。AHK最突出的特點是是「熱鍵」和「熱字串」,而現在有了「熱窗口」。O(∩_∩)O~
AHK沒有「抽象類」,但是這個函數類似Java中的「抽象類」,只能繼承使用。
## 域 Field
```autohotkey
class wParam_Base{
Created := 1,
Destroyed := 2,
Activate := 3,
Activated := 4,
GetMinRect := 5,
ReDraw := 6,
Taskman := 7,
Language := 8,
Sysmenu := 9,
Endtask := 10,
AccessibilityState := 11,
Appcommand := 12,
Windowreplaced := 13,
Windowreplacing := 14,
FullScreen := 53,
ExitFullScreen := 54,
Switched := 32772
;1 頂級窗體被「創建」
;2 頂級窗體即將被「關閉」
;3 SHELL 的主窗體將被激活
;4 頂級窗體被激活
;5 頂級窗體被最大化或最小化
;6 Windows 任務欄被刷新,也可以理解成「標題變更」
;7 任務列表的內容被選中
;8 中英文切換或輸入法切換
;9 顯示系統菜單
;10 頂級窗體被強制關閉
;11 用于殘障人士的輔助功能
;12 沒有被程序處理的APPCOMMAND。見WM_APPCOMMAND
;13 wParam=被替換的頂級窗口的hWnd
;14 wParam=替換頂級窗口的窗口hWnd
;&H8000& 掩碼
;53 全屏
;54 退出全屏
;32772 窗口切換
;------------------------------
}
```
## 方法 Method
### ShellMessage_Base(wParam, lParam, msg:="", hwnd:="")
該方法會被COM對象自動回調
### ShellMessage(wParam, lParam, msg:="", hwnd:="")
在之前,該方法必須被復寫,現在完全自動化了,不需要復寫
### ShellHook()
注冊窗口鉤子
### enable()
啟用
### disable()
禁用
## 示例
運行前,應先導入BeanLib
### 在之前必須復寫ShellMessage()
```autohotkey
WinEventObj:=new MyWinEvent()
class MyWinEvent extends WinEvent{
ShellMessage(wParam, lParam, msg:="", hwnd:=""){
if (wParam = this.wParam.Switched){
this.OnSwap()
}
return
}
;------------------------------
OnSwap(){
aTitle := A_ScriptName,aTipString := A_ScriptName,TrayTip(aTitle,aTipString)
return
}
} ;---------class MyWinEvent End
```
### 現在可以直接編寫方法
```autohotkey
WinEventObj:=new MyWinEvent()
class MyWinEvent extends WinEvent{
OnDestroyed(theWinObjs){
theWinObj := theWinObjs[1]
if(theWinObj.WinId = this.WinID.fiboOwner){
if(this.fiboObject)
this.fiboObject.close()
}
return
}
} ;---------class MyWinEvent End
```
要注意,會傳入**窗口數組**,必須有這個參數,否則會調用失敗。
*此前會傳入窗口對象,現在是窗口數組。*
- 指南 (README)
- 常見問題 (FAQ)
- 更新歷史(CHANGELOG)
- 貢獻指南 (CONTRIBUTING)
- 開源協議 (LICENCE)
- 鳴謝 (ACKNOWLEDGEMENT)
- 文檔模板 (TEMPLATE)
- 新手指南(BEGINNER_GUIDE)
- 語法高亮(HIGHLIGHTING)
- Class
- _Container
- _EX
- _List
- _Map
- _Win
- _Wins
- BeanEnum
- HotString
- HotStringMaps
- InvisibleCharacter
- JSON
- JsonFile
- Method
- ObservableMap
- ObservableObj
- WinEvent
- Timer
- MesToast
- APPLocker
- AutoClassify
- Everything
- Function
- Ini
- AutoInputBox
- ParaChecker
- PathObj
- RunningSpeedTest
- Script
- Switcher
- Stack
- TimeChecker
- Type
- UMSS
- Function
- assert()
- Analyze()
- AnalyzeClassName()
- AutoBind()
- bulkMoveFile()
- ExcelToList()
- getClass()
- getCurrentTime()
- getFunc()
- Instanof()
- InstanceCheck()
- loadMethod()
- LogPrintln()
- rawCall()
- RandomStr()
- showObj()
- Type()
- throwWithSt()
- UseCMD()
- ObjDump()
- Test
- ObjLoad()
- StringMethod
- TypeClass
- MapFactory()