DLL命令表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
.版本 2 .DLL命令 FindWindowEx, 整數型, "user32", "FindWindowExA", , 在窗口列表中尋找與指定條件相符的第一個子窗口 找到的窗口的句柄。如未找到相符窗口,則返回零。會設置GetLastError .參數 hWnd1, 整數型, , 在其中查找子的父窗口。如設為零,表示使用桌面窗口(通常說的頂級窗口都被認為是桌面的子窗口,所以也會對它們進行查找) .參數 hWnd2, 整數型, , 從這個窗口后開始查找。這樣便可利用對FindWindowEx的多次調用找到符合條件的所有子窗口。如設為零,表示從第一個子窗口開始搜索 .參數 lpsz1, 文本型, , 欲搜索的類名。零表示忽略 .參數 lpsz2, 文本型, , 欲搜索的類名。零表示忽略; .DLL命令 PostMessage, 整數型, "user32", "PostMessageA", , 將一條消息投遞到指定窗口的消息隊列。投遞的消息會在Windows事件處理過程中得到處理。在那個時候,會隨同投遞的消息調用指定窗口的窗口函數。特別適合那些不需要立即處理的窗口消息的發送 如消息投遞成功,則返回TRUE(非零)。會設置GetLastError .參數 hwnd, 整數型, , 接收消息的那個窗口的句柄。如設為HWND_BROADCAST,表示投遞給系統中的所有頂級窗口。如設為零,表示投遞一條線程消息(參考PostThreadMessage) .參數 wMsg, 整數型, , 消息標識符 .參數 wParam, 整數型, , 具體由消息決定 .參數 lParam, 整數型, , 具體由消息決定; .DLL命令 SendMessage, 整數型, "user32", "SendMessageA", , 調用一個窗口的窗口函數,將一條消息發給那個窗口。除非消息處理完畢,否則該函數不會返回。SendMessageBynum, ; SendMessageByString是該函數的“類型安全”聲明形式 由具體的消息決定 .參數 hwnd, 整數型, , 要接收消息的那個窗口的句柄 .參數 wMsg, 整數型, , 消息的標識符 .參數 wParam, 整數型, , 具體取決于消息 .參數 lParam, 整數型, , 具體取決于消息; .DLL命令 GetWindowText, 整數型, "user32", "GetWindowTextA", , 取得一個窗體的標題(caption)文字,或者一個控件的內容(在vb里使用:使用vb窗體或控件的caption或text屬性) 復制到lpString的字串長度;不包括空中止字符。會設置GetLastError .參數 hwnd, 整數型, , 欲獲取文字的那個窗口的句柄 .參數 lpString, 文本型, , 預定義的一個緩沖區,至少有cch+1個字符大小;隨同窗口文字載入 .參數 cch, 整數型, , lp緩沖區的長度; .DLL命令 GetWindowTextLength, 整數型, "user32", "GetWindowTextLengthA", , 調查窗口標題文字或控件內容的長短(在vb里使用:直接使用vb窗體或控件的caption或text屬性) 字串長度,不包括空中止字符 .參數 hwnd, 整數型, , 想調查文字長度的窗口的句柄; .DLL命令 IsWindow, 整數型, "user32", "IsWindow", , 判斷一個窗口句柄是否有效 非零表示成功,零表示失敗 .參數 hwnd, 整數型, , 待檢查窗口的句柄; .DLL命令 GetClassName, 整數型, "user32", "GetClassNameA", , 為指定的窗口取得類名 以字節數表示的類名長度;排除最后的空中止字符。零表示出錯。會設置GetLastError .參數 hwnd, 整數型, , 欲獲得類名的那個窗口的句柄 .參數 lpClassName, 文本型, , 隨同類名載入的緩沖區。預先至少必須分配nMaxCount+1個字符 .參數 nMaxCount, 整數型, , 由lpClassName提供的緩沖區長度; .DLL命令 SetForegroundWindow, 整數型, "user32", "SetForegroundWindow", , 將窗口設為系統的前臺窗口。這個函數可用于改變用戶目前正在操作的應用程序 非零表示成功,零表示失敗。會設置GetLastError .參數 hwnd, 整數型, , 帶到前臺的窗口; .DLL命令 SetFocus, 整數型, "user32", "SetFocus", , 設置鍵盤焦點 前一個擁有焦點的窗口的句柄 .參數 hwnd, 整數型, , 準備接收焦點的窗口的句柄 .DLL命令 keybd_event, , "user32", "keybd_event", , 這個函數模擬了鍵盤行動 .參數 bVk, 字節型, , 欲模擬的虛擬鍵碼 .參數 bScan, 字節型, , 鍵的OEM掃描碼 .參數 dwFlags, 整數型, , 零;或設為下述兩個標志之一;KEYEVENTF_EXTENDEDKEY:指出是一個擴展鍵,而且在前面冠以0xE0代碼;KEYEVENTF_KEYUP:模擬松開一個鍵 .參數 dwExtraInfo, 整數型, , 通常不用的一個值。api函數GetMessageExtraInfo可取得這個值。允許使用的值取決于特定的驅動程序; .DLL命令 IsIconic, 整數型, "user32", "IsIconic", , 判斷窗口是否已最小化 非零表示成功,零表示失敗 .參數 hwnd, 整數型, , 待檢測窗口的句柄; .DLL命令 MessageBox, 整數型, "user32", "MessageBoxA", , 建立消息框窗體 .參數 hwnd, 整數型 .參數 lpText, 文本型 .參數 lpCaption, 文本型 .參數 wType, 整數型 |
常量數據表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
.版本 2 .常量 易菜單命令_復制, "57634" .常量 易菜單命令_粘貼, "57637" .常量 易菜單命令_跳轉, "32793" .常量 WM_COMMAND, "273" .常量 WM_CHAR, "258", , //按下某鍵,并已發出WM_KEYDOWN, WM_KEYUP消息 .常量 WM_KEYDOWN, "256", , //按下一個鍵 .常量 WM_KEYFIRST, "256" .常量 WM_KEYUP, "257", , //釋放一個鍵 .常量 EM_SETSEL, "177" .常量 VK_CONTROL, "17" .常量 VK_A, "65" .常量 WM_LBUTTONDOWN, "513" .常量 WM_LBUTTONDBLCLK, "515" .常量 WM_LBUTTONUP, "514" .常量 WM_MOUSEMOVE, "512" .常量 KEYEVENTF_KEYUP, "2" .常量 KEYEVENTF_EXTENDEDKEY, "1" .常量 WM_SYSCOMMAND, "274" .常量 SC_RESTORE, "61728" .常量 EM_GETLINECOUNT, "186" |
易語言代碼統計
此功能需要加載 樹型框操作類模塊 1.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
.版本 2 .程序集 窗口程序集1 .子程序 __啟動窗口_創建完畢 取易IDE () .子程序 __啟動窗口_尺寸被改變 IDE組合框.寬度 = 取用戶區寬度 () - IDE組合框.左邊 - 8 統計按鈕.左邊 = 取用戶區寬度 () - 統計按鈕.寬度 - 8 刷新按鈕.左邊 = 統計按鈕.左邊 - 統計按鈕.寬度 - 8 統計編輯框.移動 (, , 取用戶區寬度 () - 16, 取用戶區高度 () - 統計編輯框.頂邊 - 8) .子程序 _刷新按鈕_被單擊 取易IDE () .子程序 _統計按鈕_被單擊 .局部變量 hWnd, 整數型 hWnd = IDE組合框.取項目數值 (IDE組合框.現行選中項) .如果真 (IsWindow (hWnd) = 0) 取易IDE () MessageBox (取窗口句柄 (), “請選擇已打開的易IDE進行統計”, “提示”, 64) IDE組合框.獲取焦點 () 返回 () .如果真結束 統計易代碼 (hWnd) .子程序 取易IDE .局部變量 hWnd, 整數型 .局部變量 strText, 文本型 .局部變量 n, 整數型 IDE組合框.清空 () hWnd = FindWindowEx (0, 0, “ENewFrame”, 字符 (0)) .判斷循環首 (hWnd ≠ 0) n = GetWindowTextLength (hWnd) + 1 strText = 取空白文本 (n) GetWindowText (hWnd, strText, n) IDE組合框.加入項目 (strText, hWnd) hWnd = FindWindowEx (0, hWnd, “ENewFrame”, 字符 (0)) .判斷循環尾 () .子程序 統計易代碼 .參數 hWndEFrame, 整數型 .局部變量 hTreeView, 整數型 .局部變量 hMDIClient, 整數型 .局部變量 hEdit, 整數型 .局部變量 樹型框, 樹型框句柄操作類 .局部變量 n .局部變量 i .局部變量 p .局部變量 x .局部變量 ApiP, 整數型 .局部變量 Api, 整數型 .局部變量 strText, 文本型 .局部變量 strCode, 文本型 .如果真 (IsWindow (hWndEFrame) = 0) 返回 () .如果真結束 hTreeView = 查找程序數據樹型框 (hWndEFrame) hMDIClient = 查找客戶區 (hWndEFrame) ApiP = -1 連續賦值 (真, 刷新按鈕.禁止, 統計按鈕.禁止, IDE組合框.禁止) 統計標簽.標題 = “正在統計...” 統計編輯框.內容 = “” 處理事件 () .如果真 (hTreeView ≠ 0 且 hMDIClient ≠ 0) .如果真 (IsIconic (hWndEFrame) ≠ 0) ' 判斷窗口是否已最小化 SendMessage (hWndEFrame, #WM_SYSCOMMAND, #SC_RESTORE, 0) .如果真結束 SetForegroundWindow (hWndEFrame) 處理事件 () .如果真 (樹型框._初始化類 (hTreeView, 真)) 樹型框.置自動更新狀態 (假) n = 樹型框.數據_取項目數 () .計次循環首 (n, i) p = 樹型框.數據_取父項目 (i - 1) .如果真 (p = 0) strText = 樹型框.數據_取項目文本 (i - 1) .如果真 (尋找文本 (“資源表|模塊引用表|窗口”, strText, , 假) = -1) 統計標簽.標題 = “正在統計:” + strText 處理事件 () 樹型框.動作_保證顯示 (i - 1) 樹型框.數據_現行選中項_置 (i - 1) SendMessage (hWndEFrame, #WM_COMMAND, #易菜單命令_跳轉, 0) 延時 (200) hEdit = 查找編輯區 (hMDIClient, strText) .如果真 (hEdit ≠ 0) SetFocus (hEdit) 發送全選命令 (hEdit) 置剪輯板文本 (“”) 處理事件 () 延時 (200) SendMessage (hWndEFrame, #WM_COMMAND, #易菜單命令_復制, 0) strCode = strCode + 取剪輯板文本 () + #換行符 .如果真結束 .如果真結束 .如果 (strText = “Dll命令”) ApiP = i - 1 .否則 .如果結束 .如果真結束 .如果真 (p = ApiP) Api = Api + 1 .如果真結束 .計次循環尾 () .如果真結束 .如果真結束 處理易代碼 (strCode) 統計編輯框.內容 = strCode 置剪輯板文本 (“”) n = 統計編輯框.發送信息 (#EM_GETLINECOUNT, 0, 0) 統計標簽.標題 = “共有代碼 ” + 到文本 (n) + “ 行” .如果真 (Api > 0) 統計標簽.標題 = 統計標簽.標題 + “,使用API ” + 到文本 (Api) + “ 個” .如果真結束 SetForegroundWindow (取窗口句柄 ()) 連續賦值 (假, 刷新按鈕.禁止, 統計按鈕.禁止, IDE組合框.禁止) .子程序 處理易代碼 .參數 strCode, 文本型, 參考 .局部變量 n, 整數型 strCode = 子文本替換 (strCode, “.版本 2” + #換行符, “”, , , 真) .判斷循環首 (尋找文本 (strCode, #換行符 + #換行符, , 假) ≠ -1) strCode = 子文本替換 (strCode, #換行符 + #換行符, #換行符, , , 真) .判斷循環尾 () strCode = “.版本 2” + #換行符 + #換行符 + strCode .子程序 發送全選命令 .參數 hWnd, 整數型 .局部變量 lParam keybd_event (#VK_CONTROL, 0, 0, 0) keybd_event (#VK_A, 0, 0, 0) keybd_event (#VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0) keybd_event (#VK_A, 0, #KEYEVENTF_KEYUP, 0) 延時 (200) .子程序 查找程序數據樹型框, 整數型 .參數 hWndEFrame, 整數型 .局部變量 hPrent, 整數型 .局部變量 hWnd, 整數型 .局部變量 List, 整數型, , "0" .局部變量 ClassName, 文本型 .局部變量 樹型框, 樹型框句柄操作類 加入成員 (List, hWndEFrame) .判斷循環首 (取數組成員數 (List) > 0) hPrent = List [1] 刪除成員 (List, 1, 1) hWnd = FindWindowEx (hPrent, 0, 字符 (0), 字符 (0)) .判斷循環首 (hWnd ≠ 0) 加入成員 (List, hWnd) ClassName = 取空白文本 (255) GetClassName (hWnd, ClassName, 255) .如果真 (ClassName = “SysTreeView32”) .如果真 (樹型框._初始化類 (hWnd, 真)) .如果真 (樹型框.數據_取項目文本 (0) = “程序數據”) 返回 (hWnd) .如果真結束 .如果真結束 .如果真結束 hWnd = FindWindowEx (hPrent, hWnd, 字符 (0), 字符 (0)) .判斷循環尾 () .判斷循環尾 () 返回 (0) .子程序 查找客戶區, 整數型, , MDIClient .參數 hWndEFrame, 整數型 .局部變量 hPrent, 整數型 .局部變量 hWnd, 整數型 .局部變量 List, 整數型, , "0" .局部變量 ClassName, 文本型 .局部變量 樹型框, 樹型框句柄操作類 加入成員 (List, hWndEFrame) .判斷循環首 (取數組成員數 (List) > 0) hPrent = List [1] 刪除成員 (List, 1, 1) hWnd = FindWindowEx (hPrent, 0, 字符 (0), 字符 (0)) .判斷循環首 (hWnd ≠ 0) 加入成員 (List, hWnd) ClassName = 取空白文本 (255) GetClassName (hWnd, ClassName, 255) .如果真 (ClassName = “MDIClient”) 返回 (hWnd) .如果真結束 hWnd = FindWindowEx (hPrent, hWnd, 字符 (0), 字符 (0)) .判斷循環尾 () .判斷循環尾 () 返回 (0) .子程序 查找編輯區, 整數型, , 在客戶區里查找當前編輯的窗口 .參數 hMDIClient, 整數型 .參數 strWindowText, 文本型 .局部變量 hWnd, 整數型 .局部變量 strText, 文本型 .局部變量 ClassName, 文本型 .局部變量 n, 整數型 .局部變量 hPrent, 整數型 .局部變量 hAfx, 整數型 hWnd = FindWindowEx (hMDIClient, 0, 字符 (0), 字符 (0)) n = GetWindowTextLength (hWnd) + 1 strText = 取空白文本 (n) GetWindowText (hWnd, strText, n) .如果真 (尋找文本 (strText, strWindowText, , 假) ≠ -1) hPrent = FindWindowEx (hWnd, 0, 字符 (0), 字符 (0)) .如果真 (hPrent ≠ 0) hWnd = FindWindowEx (hPrent, 0, 字符 (0), 字符 (0)) .判斷循環首 (hWnd ≠ 0) ClassName = 取空白文本 (255) GetClassName (hWnd, ClassName, 255) .如果真 (取文本左邊 (ClassName, 4) = “Afx:”) hAfx = hWnd 跳出循環 () .如果真結束 hWnd = FindWindowEx (hPrent, hWnd, 字符 (0), 字符 (0)) .判斷循環尾 () .如果真結束 .如果真結束 .如果真 (hAfx ≠ 0) hAfx = FindWindowEx (hAfx, 0, 字符 (0), 字符 (0)) .如果真結束 返回 (hAfx) |
運行結果:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接