查找窗口句柄FindWindow()和和EnumWindows()
FindWindow()和EnumWindows()还有EnumChildWindows()非常简单,下面是示例代码。应该不用做什么说明就能看懂。
对于多数游戏来说,由于他们没有直接使用控件开发,所以用FindWindow()是找不到句柄的,具体怎么弄的不清楚,大概原理就是,自己绘画,根据鼠标点击位置执行相应函数。(个人理解,不一定准确)
#include<Windows.h>
BOOL CALLBACK EnumChildWindowsProc (HWND hwnd, LPARAM lparam)
{
char pcName[1024] = "";
GetWindowText(hwnd,pcName,1024);
MessageBox(hwnd,pcName,"bb",MB_OK);
return TRUE;
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
char pcName[1024] = "";
GetWindowText(hwnd,pcName,1024);
if(strcmp(pcName,"我的电脑")==0)
{
EnumChildWindows(hwnd,EnumChildWindowsProc,-2);
//PostMessage(hwnd,WM_CLOSE,NULL,NULL);//可以关闭这个窗口
}
return TRUE;
}
int main(int argc,char *argv)
{
EnumWindows(EnumWindowsProc,-1);//枚举所有窗口
//HWND hwndFind = ::FindWindow(NULL,"我的电脑");
//if(hwndFind!=NULL)
//{
// //::MessageBox(hwndFind,"aaa","bbb",MB_OK);
// PostMessage(hwndFind,WM_CLOSE,NULL,NULL);
//}
return 0;
}
对于多数游戏来说,由于他们没有直接使用控件开发,所以用FindWindow()是找不到句柄的,具体怎么弄的不清楚,大概原理就是,自己绘画,根据鼠标点击位置执行相应函数。(个人理解,不一定准确)
#include<Windows.h>
BOOL CALLBACK EnumChildWindowsProc (HWND hwnd, LPARAM lparam)
{
char pcName[1024] = "";
GetWindowText(hwnd,pcName,1024);
MessageBox(hwnd,pcName,"bb",MB_OK);
return TRUE;
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
char pcName[1024] = "";
GetWindowText(hwnd,pcName,1024);
if(strcmp(pcName,"我的电脑")==0)
{
EnumChildWindows(hwnd,EnumChildWindowsProc,-2);
//PostMessage(hwnd,WM_CLOSE,NULL,NULL);//可以关闭这个窗口
}
return TRUE;
}
int main(int argc,char *argv)
{
EnumWindows(EnumWindowsProc,-1);//枚举所有窗口
//HWND hwndFind = ::FindWindow(NULL,"我的电脑");
//if(hwndFind!=NULL)
//{
// //::MessageBox(hwndFind,"aaa","bbb",MB_OK);
// PostMessage(hwndFind,WM_CLOSE,NULL,NULL);
//}
return 0;
}