易語言枚舉進程通過窗口句柄獲取已經(jīng)登錄的QQ號碼
更新時間:2018年11月28日 14:53:33 作者:易語言源碼教程
今天小編就為大家分享一篇關于易語言枚舉進程通過窗口句柄獲取已經(jīng)登錄的QQ號碼,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
DLL命令表
.版本 2 .DLL命令 GetDesktopWindow, 整數(shù)型, "user32.dll", "GetDesktopWindow" .DLL命令 CreateToolhelp32Snapshot, 整數(shù)型, "kernel32", "CreateToolhelp32Snapshot" .參數(shù) dwFlags, 整數(shù)型, , 0 .參數(shù) th32ProcessIE, 整數(shù)型, , 0 .DLL命令 Process32First, 整數(shù)型, "kernel32", "Process32First" .參數(shù) hSnapshot, 整數(shù)型, , 0 .參數(shù) lppe, 進程信息列表, , 0 .DLL命令 CloseHandle, 邏輯型, "Kernel32", "CloseHandle", , 關閉打開的對象句柄 .參數(shù) hObject, 整數(shù)型, , 要關閉的對象句柄 .DLL命令 GetWindowTextA, 整數(shù)型, "user32.dll", "GetWindowTextA", , 取得一個窗體的標題(caption)文字,或者一個控件的內容(在vb里使用:使用vb窗體或控件的caption或text屬性) 復制到lpString的字串長度;不包括空中止字符。會設置GetLastError .參數(shù) hWnd, 整數(shù)型, , 欲獲取文字的那個窗口的句柄 .參數(shù) lpString, 文本型, 傳址, 預定義的一個緩沖區(qū),至少有cch 1個字符大??;隨同窗口文字載入 .參數(shù) nMaxCount, 整數(shù)型, , lp緩沖區(qū)的長度; .DLL命令 GetWindowTextLength, 整數(shù)型, "user32", "GetWindowTextLengthA", 公開 .參數(shù) hwnd, 整數(shù)型 .DLL命令 Process32Next, 整數(shù)型, "kernel32", "Process32Next", , 獲得下一個進程的句柄 .參數(shù) hSnapshot, 整數(shù)型, , 0 .參數(shù) lppe, 進程信息列表, , 0 .DLL命令 GetWindow, 整數(shù)型, , "GetWindow" .參數(shù) 源窗口, 整數(shù)型 .參數(shù) 關系, 整數(shù)型
自定義數(shù)據(jù)類型表
.版本 2 .數(shù)據(jù)類型 進程信息列表, 公開 .成員 dwSize, 整數(shù)型, , , 1 .成員 cntUsage, 整數(shù)型, , , 2 .成員 進程ID, 整數(shù)型, , , 3 .成員 th32DefaultHeapID, 整數(shù)型, , , 4 .成員 th32ModuleID, 整數(shù)型, , , 5 .成員 cntThreads, 整數(shù)型, , , 6 .成員 th32ParentProcessID, 整數(shù)型, , , 7 .成員 pcPriClassBase, 整數(shù)型, , , 8 .成員 dwFlags, 整數(shù)型, , , 9 .成員 進程名稱, 字節(jié)型, , "256", 10
窗口句柄方式取已登陸QQ號碼的代碼
.版本 2
.程序集 窗口程序集_啟動窗口
.子程序 _啟動子程序, 整數(shù)型
.局部變量 返回的QQ號碼, 文本型
.局部變量 分割的文本, 文本型, , "0"
返回的QQ號碼 = 系統(tǒng)_取已登陸QQ號碼 ()
分割的文本 = 分割文本 (返回的QQ號碼, #換行符, )
信息框 (“有” + 到文本 (取數(shù)組成員數(shù) (分割的文本)) + “個QQ” + #換行符 + 返回的QQ號碼, 0, )
返回 (0)
.子程序 窗口_取標題, 文本型, 公開
.參數(shù) 窗口句柄, 整數(shù)型
.局部變量 局_緩沖區(qū), 文本型
.局部變量 局_緩沖大小
局_緩沖大小 = GetWindowTextLength (窗口句柄) + 1
局_緩沖區(qū) = 取空白文本 (局_緩沖大小)
GetWindowTextA (窗口句柄, 局_緩沖區(qū), 局_緩沖大小)
返回 (局_緩沖區(qū))
.子程序 窗口_枚舉窗口句柄, 整數(shù)型, 公開, 通過窗口任務關系來枚舉所有窗口,返回窗口句柄數(shù)目,失敗返回0
.參數(shù) 句柄數(shù)組, 整數(shù)型, 可空 數(shù)組, 返回的所有窗口句柄數(shù)組
.局部變量 窗口句柄, 整數(shù)型
清除數(shù)組 (句柄數(shù)組)
窗口句柄 = GetWindow (GetDesktopWindow (), 5)
.判斷循環(huán)首 (窗口句柄 ≠ 0)
加入成員 (句柄數(shù)組, 窗口句柄)
窗口句柄 = GetWindow (窗口句柄, 2)
.判斷循環(huán)尾 ()
返回 (取數(shù)組成員數(shù) (句柄數(shù)組))
.子程序 進程_取ID數(shù)組, 整數(shù)型, 公開, 取指定進程名稱的所有進程的進程ID(返回進程ID數(shù)目,沒有返回0)
.參數(shù) 進程名, 文本型, , 程序進程名
.參數(shù) 進程ID數(shù)組, 整數(shù)型, 參考 數(shù)組, 返回的進程ID 數(shù)組
.參數(shù) 區(qū)分大小寫, 邏輯型, 可空, 默認不區(qū)分進程名大小寫
.局部變量 信息, 進程信息列表
.局部變量 進程快照, 整數(shù)型
.局部變量 進程句柄, 整數(shù)型
清除數(shù)組 (進程ID數(shù)組)
進程快照 = CreateToolhelp32Snapshot (15, 0)
.如果真 (進程快照 = 0)
返回 (0)
.如果真結束
信息.dwSize = 1024
進程句柄 = Process32First (進程快照, 信息)
.判斷開始 (區(qū)分大小寫)
.判斷循環(huán)首 (進程句柄 ≠ 0)
.如果真 (進程名 = 到文本 (信息.進程名稱))
加入成員 (進程ID數(shù)組, 信息.進程ID)
.如果真結束
進程句柄 = Process32Next (進程快照, 信息)
.判斷循環(huán)尾 ()
.默認
.判斷循環(huán)首 (進程句柄 ≠ 0)
.如果真 (到小寫 (進程名) = 到小寫 (到文本 (信息.進程名稱)))
加入成員 (進程ID數(shù)組, 信息.進程ID)
.如果真結束
進程句柄 = Process32Next (進程快照, 信息)
.判斷循環(huán)尾 ()
.判斷結束
CloseHandle (進程快照)
返回 (取數(shù)組成員數(shù) (進程ID數(shù)組))
.子程序 系統(tǒng)_取已登陸QQ號碼, 文本型, 公開, 成功返回QQ號碼,如果是多個QQ號碼以#換行符分開,其他的都返回空
.局部變量 局_窗口標題, 文本型
.局部變量 局_變量文本, 文本型
.局部變量 局_分割的文本, 文本型, , "0"
.局部變量 局_進程ID數(shù)目, 整數(shù)型
.局部變量 計次, 整數(shù)型
.局部變量 i, 整數(shù)型
.局部變量 局_進程ID數(shù)組, 整數(shù)型, , "0"
.局部變量 局_窗口數(shù)目, 整數(shù)型
局_進程ID數(shù)目 = 進程_取ID數(shù)組 (“QQ.exe”, 局_進程ID數(shù)組)
計次 = 1
局_窗口數(shù)目 = 窗口_枚舉窗口句柄 (局_進程ID數(shù)組)
.計次循環(huán)首 (局_窗口數(shù)目, i)
局_窗口標題 = 窗口_取標題 (局_進程ID數(shù)組 [i])
.如果真 (尋找文本 (局_窗口標題, “qqexchangewnd_shortcut_prefix”, , 假) ≠ -1)
局_分割的文本 = 分割文本 (局_窗口標題, “_”, )
.判斷開始 (計次 = 局_進程ID數(shù)目)
局_變量文本 = 局_變量文本 + 局_分割的文本 [取數(shù)組成員數(shù) (局_分割的文本)]
計次 = 計次 + 1
.默認
局_變量文本 = 局_變量文本 + 局_分割的文本 [取數(shù)組成員數(shù) (局_分割的文本)] + #換行符
計次 = 計次 + 1
.判斷結束
.如果真結束
.如果真 (計次 > 局_進程ID數(shù)目)
跳出循環(huán) ()
.如果真結束
.計次循環(huán)尾 ()
返回 (局_變量文本)
運行結果:

總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

