#include <windows.h>
HWND gameh,gameh2,gameh3; //定义三个句柄
PCHAR winCaption = "诛仙2"; //窗口名称
HWND windowhWnd = 0;
HWND gameall[3]; //存放同名窗口句柄的数组
bool CALLBACK enumWindowProc1(HWND hWnd,LPARAM lParam)
{
char buf[256];
if(::GetWindowText(hWnd,buf,255)) //遍历窗口并把窗口名称存在buf中
{
PCHAR caption = buf; //将窗口名称赋值给caption
if(strcmp(caption,winCaption)== 0) //找到和“诛仙2”相同的句柄
{
//查找到一个窗口句柄。
windowhWnd = hWnd;
gameall[0]=windowhWnd; //将找到的第一个句柄存入数组第一个指针里gameall[0];
return TRUE;
}
}
//没有找到窗口句柄返回继续查找
return TRUE;
}
bool CALLBACK enumWindowProc2(HWND hWnd,LPARAM lParam)
{
char buf[256];
if(::GetWindowText(hWnd,buf,255))
{
PCHAR caption = buf;
if(strcmp(caption,winCaption)== 0)
{
//查找到一个窗口句柄。
windowhWnd = hWnd;
if((gameall[0]==windowhWnd))
{
return FALSE;
}
else
{
gameall[1]=windowhWnd;
return TRUE;
}
}
}
//没有找到窗口句柄返回继续查找
return TRUE;
}
bool CALLBACK enumWindowProc3(HWND hWnd,LPARAM lParam)
{
char buf[256];
if(::GetWindowText(hWnd,buf,255))
{
PCHAR caption = buf;
if(strcmp(caption,winCaption)== 0)
{
//查找到一个窗口句柄。
windowhWnd = hWnd;
if(gameall[0]==windowhWnd)
{
return FALSE;
}
else if(gameall[1]==windowhWnd)
{
return FALSE;
}
else
{
gameall[2]=windowhWnd;
return false;
}
}
}
//没有找到窗口句柄返回继续查找
return true;
}
void GetHandle()
{
::EnumWindows((WNDENUMPROC)enumWindowProc1,0);
::EnumWindows((WNDENUMPROC)enumWindowProc2,0);
::EnumWindows((WNDENUMPROC)enumWindowProc3,0);
}
获取多个同名窗口的句柄
最新推荐文章于 2024-07-17 17:11:19 发布