获取多个同名窗口的句柄

#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);   

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值