有没有办法,可用找到本进程指定标题的窗口,用FindWindow好像不行。。。

kuhaishui 2009-04-14 11:35:23
如题。。。
...全文
143 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuhaishui 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 P_hantom 的回复:]
枚举窗口是一个比较慢的过程,本质上和你自己做一个Manager没有区别,而Manager的速度更快,因为枚举窗口会把所有窗口遍历一次,而Manager只是在你需要的范围内搜索,速度会快很多
[/Quote]

--你说的也很有道理,只是如果工程大了的话,管理起来就比较麻烦,而且我的工程是加载了很多的dll的,dll里面本身就有不少的窗口,这样如果用manager更不方便以后扩展,所以暂时还是决定用枚举好了,先试试效果。。。
forestlier 2009-04-16
  • 打赏
  • 举报
回复
定义一个全局窗体句柄保存该窗体句柄。
etz2008 2009-04-16
  • 打赏
  • 举报
回复
IONPhantom 2009-04-16
  • 打赏
  • 举报
回复
枚举窗口是一个比较慢的过程,本质上和你自己做一个Manager没有区别,而Manager的速度更快,因为枚举窗口会把所有窗口遍历一次,而Manager只是在你需要的范围内搜索,速度会快很多
kuhaishui 2009-04-16
  • 打赏
  • 举报
回复
估计也只能用七楼的方法了。。。
IONPhantom 2009-04-14
  • 打赏
  • 举报
回复
你的窗口都是一个类型的吗?都是自己创建的吗?
如果是那就自己做一个Manager,每创建一个窗口就把对应Handle/窗口名/其他属性打成一个包或者做进一个结构里,然后存入Manager,这样在后面就可以通过窗口名在Manager里面查找到指定窗口的handle了
kuhaishui 2009-04-14
  • 打赏
  • 举报
回复
标题怎么修改,也不能保证就真的能唯一,但是加类名的话,如果像是messagebox这样方式弹出来的窗口就没有办法改了,而且修改类名的话就需要把所有的窗口都做修改,我的程序中dialog非常多,不想改呢,?
oyljerry 2009-04-14
  • 打赏
  • 举报
回复
FindWindow,你的标题最好为独一无二的,或者加上类名来组合查找...
byxdaz 2009-04-14
  • 打赏
  • 举报
回复
先枚举所有的窗口,再根据类名/窗口名查找。
HWND hWnd;
HWND m_hwndFind[100] = {0};
int m_num = 0 ;
TCHAR m_store[MAX_PATH];
TCHAR m_name[MAX_PATH];
TCHAR m_strClass[MAX_PATH];
TCHAR m_FilePath[MAX_PATH];
TCHAR m_FileName[24];

// Enum Windows
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
if(::GetWindowLong(hWnd,GWL_STYLE)&WS_VISIBLE)
{
m_hwndFind[m_num] = hWnd;
m_num++;
}
return TRUE;
}

//用法 ::EnumWindows(EnumWindowsProc,NULL);
IONPhantom 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kuhaishui 的回复:]
--没有其他更好的办法?
[/Quote]
这个方法不好吗?
DavidHsing 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kuhaishui 的回复:]
标题怎么修改,也不能保证就真的能唯一,但是加类名的话,如果像是messagebox这样方式弹出来的窗口就没有办法改了,而且修改类名的话就需要把所有的窗口都做修改,我的程序中dialog非常多,不想改呢,?
[/Quote]

弹出窗口的类名是 #32770
kuhaishui 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 P_hantom 的回复:]
你的窗口都是一个类型的吗?都是自己创建的吗?
如果是那就自己做一个Manager,每创建一个窗口就把对应Handle/窗口名/其他属性打成一个包或者做进一个结构里,然后存入Manager,这样在后面就可以通过窗口名在Manager里面查找到指定窗口的handle了
[/Quote]

--没有其他更好的办法?

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧