Findwindow函数用法
Findwindow函数用法首先FindWindow只是用来寻找某个窗体的,读写其他进程数据是另有方法的;所有操作系统都提供了读写其他进程内存数据的API,只是看你是否有权限读写,以及读写后的后果由你承担;一个最简单的例子,如果一个进程无法读另外一个进程的内存数据,那调试器如何工作,小编给大家介绍说说怎么使用吧。
1.函数说明:
FindWindow。Win32 API函数。
FindWindow函数返回与指定字符串相匹配。窗口类名或窗口名的最顶层窗口的窗口句柄;这个函数不会查找子窗口。
2.函数原型:
HWND FindWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName
);
3.参数说明:
lpClassName
指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子;如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子;这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。
lpWindowName
指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串;如果此参数为NULL,则匹配所有窗口名。
4返回值:
如果函数执行成功,FindWindowA则返回值是拥有指定窗口类名。或窗口名的窗口的句柄。
如果函数执行失败,FindWindowA则返回值为 NULL;可以通过调用GetLastError函数获得更加详细的错误信息。
5.使用示例:
HWND hWndRcv = ::FindWindow(NULL,“123“);
if(hWndRcv != NULL)
{
AfxMessageBox(“找到123窗口“);
}
C#中
导入库:user32.lib
头文件:winuser.h
***.Net 中运用
命名空间 using System.Runtime.InteropServices;
导入库 [DllImport(“user32.dll“)]
函数原型 public static extern IntPtr FindWindow。(string lpClassName,string lpWindowName);
参数说明 lpClassName String.指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类
lpWindowName String.指向包含了窗口文本(或标签)的空中止(C语言)字串的指针。或设为零,表示接收 任何窗口标题
返回值 :句柄
绕过所有用户层HOOK模拟FindWindow函数。
分析API函数原理
FindWindowA最外层流程:
进入CALL USER32.77D28242:
Findwindow函数用法图2
进入CALL USER32.77D2C7AC (NtUserFindWindow):
Findwindow函数用法图3
Findwindow函数用法图4
进入CALL ntdll.KiFastSystemCall:
Findwindow函数用法图5
Findwindow函数用法图6
相关下载
大家都在找