首页
社区
课程
招聘
[求助]EnumWindows函数 枚举窗口不返回 进入死循环
发表于: 2012-9-13 17:57 6033

[求助]EnumWindows函数 枚举窗口不返回 进入死循环

2012-9-13 17:57
6033
  代码VC++ MFC(列举所有桌面窗口,窗口标题放在全局变量string buf[]数组中,n是静态变量):   
BOOL CALLBACK lpEnumFunc(HWND hwnd, LPARAM lParam)   
{  
 char str[128];   
::GetWindowText(hwnd,str,sizeof(str));  

 buf[n++]=str;  
 return 1;   
}  
 void CEnumWindowsDlg::OnOK()   
{   // TODO: Add extra validation here  
 n=0;   
EnumWindows(lpEnumFunc,NULL);  
 int i;   
for(i=0;i<n;i++)   
{  
 if(buf!="")   
m_list.AddString(buf.c_str());  
 }  
 //CDialog::OnOK();   
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
GetWindowText这个函数有可能会卡住的
建议用线程 发现挂了重新创建
2012-9-13 21:21
0
雪    币: 126
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在lpEnumFunc函数中自己跟踪看下为什么不返回
是一直有心的枚举窗口进来,还是调用有问题
2012-9-14 14:44
0
雪    币: 601
活跃值: (256)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
4
2楼快人快语
2012-9-14 16:23
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
如果是这样可以使用SendMessageTimeout发送WM_GETTEXT消息来获取,加入超时判断就不会卡住了。
2012-9-18 13:41
0
游客
登录 | 注册 方可回帖
返回
//