获取多个同名窗口的句柄

来源:互联网 发布:淘宝外贸衣服哪里来的 编辑:程序博客网 时间:2024/06/05 11:24
#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;             //将窗口名称赋值给captionif(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);   }

0 0