鱼C论坛

 找回密码
 立即注册
查看: 4287|回复: 2

如何通过类名找到一个窗口的句柄?

[复制链接]
发表于 2015-1-25 13:25:33 | 显示全部楼层 |阅读模式
20鱼币
问题1:如何枚举当前所有窗口的进程ID,标题,句柄,类名?
问题2:桌面现在有很多窗口,其中有两个窗口,暂且叫做窗口A,窗口B;他们的类名都是"HELLO",其中窗口A的标题是“我是窗口A”,窗口将B的标题未知,那么如何找到窗口B的句柄呢?可以的话麻烦热心的鱼油写一下详细的代码。



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-7 17:44:27 | 显示全部楼层
BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)  
{//枚举子窗口的回调函数
setlocale(LC_ALL,"chs");
count++;
TCHAR lpWinTitle[256],lpClassName[256];  
::GetWindowTextW(hwnd,(LPWSTR)lpWinTitle,256-1); //获得窗口caption
::GetClassNameW(hwnd,(LPWSTR)lpClassName,256-1); //获得窗口类名
if (wcsicmp((LPWSTR)lpWinTitle,L"")!=NULL && wcsicmp((LPWSTR)lpClassName,L"")!=NULL) //过滤掉没有名子和类名的窗口
{
  fwprintf(fp,_T("\n"));
  for (int i=1;i<=count;i++) fprintf(fp," ");
  fwprintf(fp,_T("-0xX:'%ws':'%ws'"),hwnd,lpWinTitle,lpClassName);
  if(wcsicmp(lpClassName,L"SysListView32")==NULL)
   ShowListView(hwnd);
  
  EnumChildWindows(hwnd,EnumChildProc,0); //递归枚举子窗口
}
count--;
return TRUE ;
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lparam)
{//枚举窗口的回调函数
setlocale(LC_ALL,"chs");
count = 1;
TCHAR lpWinTitle[256],lpClassName[256];
::GetWindowTextW(hwnd,lpWinTitle,256-1); //获得窗口caption
::GetClassNameW(hwnd,lpClassName,256-1); //获得窗口类名
if (wcsicmp(lpWinTitle,L"")!=NULL && wcsicmp(lpClassName,L"")!=NULL) //过滤掉没有名子和类名的窗口
{
  fwprintf(fp,_T("\n*-0xX:'%ws':'%ws'"),hwnd,lpWinTitle,lpClassName);

  EnumChildWindows(hwnd,EnumChildProc,0); //继续枚举子窗口,传递给回调函数该子窗口的句柄
}
return TRUE ;
}
int main()
{
setlocale(LC_ALL,"chs");
::EnumWindows(EnumWindowsProc,0); //枚举桌面的窗口,每找到一个窗口,调用一次回调函数,传递给回调函数该窗口的句柄
system("pause");
return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-7 22:23:50 | 显示全部楼层
FindWindow,http://baike.baidu.com/link?url=aBqhueV99b-El0tIiyf5wN6ThWzxwOWrrATuMHFu0CC16Mu3u3UTRFAP5KjUOqdKOTbNFLQn0MmavRug3KIL6a,别想的那么难。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 15:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表