获得指定位置的窗体及窗体里面控件的ID
2017-02-11 20:16:41 访问(3503) 赞(0) 踩(0)
相关下载:eKDemo.exe.zip eKDemo.zip
// 获得顶父窗体的HWND
HWND CeKDemoDlg::GetTopParentHWND(HWND _hWnd)
{
HWND theResult = _hWnd;
if(theResult == NULL)
return theResult;
HWND pW = NULL;
while(theResult !=NULL)
{
pW= ::GetParent(theResult);
if(pW == NULL)
return theResult;
theResult = pW;
}
return NULL;
}
// 获得窗体的控件名称 //
CString CeKDemoDlg::PrintCtrlName(CString layer,HWND _hWnd)
{
if(_hWnd==NULL)
return "";
CString str;
//获取窗体_hWnd的子窗体
HWND hChildWnd = ::GetWindow(_hWnd, GW_CHILD);
while(hChildWnd!=NULL)
{
//获取窗口类名
char szClassName[MAX_PATH];
::GetClassName(hChildWnd, szClassName, MAX_PATH);
CString strOne;
strOne.Format("%s",szClassName);
if(szClassName)
{
str+= "\r\n";
str += layer;
str += strOne;
}
try
{
str += " |输出内容|==> ";
char szText[MAX_PATH];
::SendMessage(hChildWnd,WM_GETTEXT,(WPARAM)MAX_PATH,(LPARAM)szText);
str += szText;
}
catch(CUserException ex)
{
}
CString subStr = PrintCtrlName(layer+"--",hChildWnd);
if(subStr)
{
str += subStr;
}
//继续访问下一个子窗体
hChildWnd = ::GetNextWindow(hChildWnd, GW_HWNDNEXT);
}
//WinAPI: GetWindow - 获取与指定窗口具有指定关系的窗口的句柄
//
////声明:
//GetWindow(
// hWnd: HWND; {指定的窗口句柄}
// uCmd: UINT {指定的关系选项}
//): HWND; {失败返回0; 成功返回符合的窗口句柄}
//
////uCmd 可选值:
//GW_HWNDFIRST = 0; {同级别第一个}
//GW_HWNDLAST = 1; {同级别最后一个}
//GW_HWNDNEXT = 2; {同级别下一个}
//GW_HWNDPREV = 3; {同级别上一个}
//GW_OWNER = 4; {属主窗口}
//GW_CHILD = 5; {子窗口}
return str;
}
void CeKDemoDlg::OnBnClickedButtonWindowfrompoint()
{
// TODO: 在此添加控件通知处理程序代码
POINT p;
p.x = 200;
p.y = 200;
HWND _hWnd=::WindowFromPoint(p);
// HWND _hWnd=::FindWindow(_T("WindowsFormsApplication1"),NULL);
if(_hWnd==NULL)
{
AfxMessageBox(_T("没有获得窗体"));
return;
}
// AfxMessageBox(_T("OK"));
_hWnd = GetTopParentHWND(_hWnd);
if(_hWnd == NULL)
{
AfxMessageBox(_T("获得顶窗体失败"));
return;
}
TCHAR title[MAX_PATH];
// 获得窗体标题 //
::GetWindowText(_hWnd,title,MAX_PATH);
CString strTitle = title;
AfxMessageBox(strTitle);
}
void CeKDemoDlg::OnBnClickedButtonOne()
{
// TODO: 在此添加控件通知处理程序代码
POINT p;
p.x = 200;
p.y = 200;
HWND _hWnd=::WindowFromPoint(p);
// HWND _hWnd=::FindWindow(_T("WindowsFormsApplication1"),NULL);
if(_hWnd==NULL)
{
AfxMessageBox(_T("没有获得窗体"));
return;
}
// AfxMessageBox(_T("OK"));
_hWnd = GetTopParentHWND(_hWnd);
if(_hWnd == NULL)
{
AfxMessageBox(_T("获得顶窗体失败"));
return;
}
CString str = PrintCtrlName("",_hWnd);
CTextBoxResultDialog fd;
fd.ResultTextSet(str);
fd.DoModal();
}
标签:
获得指定位置的窗体及窗体里面控件的ID 


上一条:
下一条:
相关评论
发表评论