Findwindow函數(shù)用法
時間:2021-01-12 13:18:17 作者:無名 瀏覽量:56
Findwindow函數(shù)用法首先FindWindow只是用來尋找某個窗體的,讀寫其他進程數(shù)據(jù)是另有方法的;所有操作系統(tǒng)都提供了讀寫其他進程內(nèi)存數(shù)據(jù)的API,只是看你是否有權(quán)限讀寫,以及讀寫后的后果由你承擔(dān);一個最簡單的例子,如果一個進程無法讀另外一個進程的內(nèi)存數(shù)據(jù),那調(diào)試器如何工作,小編給大家介紹說說怎么使用吧。
1.函數(shù)說明:
FindWindow。Win32 API函數(shù)。
FindWindow函數(shù)返回與指定字符串相匹配。窗口類名或窗口名的最頂層窗口的窗口句柄;這個函數(shù)不會查找子窗口。
2.函數(shù)原型:
HWND FindWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName
);
3.參數(shù)說明:
lpClassName
指向一個以null結(jié)尾的、用來指定類名的字符串或一個可以確定類名字符串的原子;如果這個參數(shù)是一個原子,那么它必須是一個在調(diào)用此函數(shù)前已經(jīng)通過GlobalAddAtom函數(shù)創(chuàng)建好的全局原子;這個原子(一個16bit的值),必須被放置在lpClassName的低位字節(jié)中,lpClassName的高位字節(jié)置零。
lpWindowName
指向一個以null結(jié)尾的、用來指定窗口名(即窗口標題)的字符串;如果此參數(shù)為NULL,則匹配所有窗口名。
4返回值:
如果函數(shù)執(zhí)行成功,F(xiàn)indWindowA則返回值是擁有指定窗口類名;虼翱诿拇翱诘木浔。
如果函數(shù)執(zhí)行失敗,F(xiàn)indWindowA則返回值為 NULL;可以通過調(diào)用GetLastError函數(shù)獲得更加詳細的錯誤信息。
5.使用示例:
HWND hWndRcv = ::FindWindow(NULL,“123“);
if(hWndRcv != NULL)
{
AfxMessageBox(“找到123窗口“);
}
C#中
導(dǎo)入庫:user32.lib
頭文件:winuser.h
***.Net 中運用
命名空間 using System.Runtime.InteropServices;
導(dǎo)入庫 [DllImport(“user32.dll“)]
函數(shù)原型 public static extern IntPtr FindWindow。(string lpClassName,string lpWindowName);
參數(shù)說明 lpClassName String.指向包含了窗口類名的空中止(C語言)字串的指針;或設(shè)為零,表示接收任何類
lpWindowName String.指向包含了窗口文本(或標簽)的空中止(C語言)字串的指針。或設(shè)為零,表示接收 任何窗口標題
返回值 :句柄
繞過所有用戶層HOOK模擬FindWindow函數(shù)。
分析API函數(shù)原理
FindWindowA最外層流程:
進入CALL USER32.77D28242:
Findwindow函數(shù)用法圖2
進入CALL USER32.77D2C7AC (NtUserFindWindow):
Findwindow函數(shù)用法圖3
Findwindow函數(shù)用法圖4
進入CALL ntdll.KiFastSystemCall:
Findwindow函數(shù)用法圖5
Findwindow函數(shù)用法圖6
- 軟件性質(zhì):國外軟件
- 授權(quán)方式:免費版
- 軟件語言:英文
- 軟件大。45 KB
- 下載次數(shù):656 次
- 更新時間:2021/1/12 16:30:39
- 運行平臺:WinXP,Win7...
- 軟件描述:查找文本(標題)和/或類名的窗口,并返回系統(tǒng)處理,并選擇性地閃爍窗口和/或把它帶... [立即下載]