EnumWindow() and EnumChildWindow()配合回调函数,可以取得所有的句柄。
解决方案 »
- 串口API,不是问题的问题
- 为什么我的程序运行在RING0下修改注册表
- 想在CRichEditCtrl 控件中显示一个表格,该在哪个函数中绘制?
- 初学者问:以前学过vb,现在学vc,觉得区别太大了.一时转不过来.VC中行别强调类,过来人说说,如何转呀.哪些思路要转换呀?
- 在线等,一个加载DLL的例子不成功,提示是“无法定位程序输入点?Myfun@CMydll@@QAEXXZ 于动态键接库Mydll.dll上
- 类型转换错误问题
- 关于ClassView的问题,请知情者告诉小弟
- 蓝牙开发
- 请问:关于用软件向手机发送短信息的设计方法或该类软件的源程序!
- 请教高人,哪儿可以找到现成的加密算法(PB代码或C代码)
- 要把一个单线程变成多线程,难么?
- 我想编一个定时软件,要某一软件某一时间执行某一功能~!实现难吗?
如:
var HWD:THandle;
begin
HWD:=FindWindow('','某个窗体的标题');
if HWD<>0 then
begin
//我想找这个窗体中其它的,不太需要子窗体的句柄。
//比如一个登陆窗体,有Edit,Button,
//我是想找到Edit.Handle,Button.Handle
end;
end;
HWND hTopParentWnd;//指定的窗口
EnumChildWindows(hTopParentWnd, EnumSetChild, NULL);//调用
//------------------------------------------------
//名称:EnumSetChild
//描述:枚举并设置m_cWndTree的位置
//------------------------------------------------BOOL CALLBACK EnumSetChild(HWND hwnd, LPARAM lParam)
{
if(::GetParent(hwnd) != hTopParentWnd)
return TRUE;
CString strWndName, strHandle, strCaption;
CFindIEDlg *pDlg = (CFindIEDlg *)AfxGetMainWnd();
::GetClassName(hwnd, strWndName.GetBuffer(50), 100);
_itoa((int)hwnd, strHandle.GetBuffer(20), 16); //得到窗口的类名
::GetWindowText(hwnd, strCaption.GetBuffer(50), 50);
strCaption.ReleaseBuffer();
strWndName.ReleaseBuffer();
strHandle.ReleaseBuffer();
strHandle.MakeUpper();
strHandle += "[" + strCaption + "]"+ strWndName;
//-------------------------------------递归算法
hTopParentWnd = hwnd;
EnumChildWindows(hwnd, EnumSetChild, NULL);
hTopParentWnd = ::GetParent(hwnd);
//------------------------------------
return TRUE;
}
email:[email protected]