获取窗体句柄:通过窗体标题模糊查询

来源:互联网 发布:宣城太守知不知是谁 编辑:程序博客网 时间:2024/06/05 01:00

对于 HWND FindWindow(          LPCTSTR lpClassName,
    LPCTSTR lpWindowName
);
lpWindowName必须和查询窗体标题完全相等情况下才可正确返回窗体句柄,比如若想查询窗体"无标题-记事本"
CString strTitle = _T("无标题-记")
FindWindow(NULL, (LPCTSTR)strTitle)则无法获取到窗体句柄

通过EnumWindows方法则可以实现窗体模糊查询

HWND hWndWindow;
CString global_strTitle;
#define  MAX_TITLE_LENGTH 255

BOOL CALLBACK EnumWndProc(HWND hwnd,
        LPARAM lParam)
{
 BOOL bRet = TRUE;
 if (IsWindowVisible(hwnd))
 {
  TCHAR szTitle[MAX_TITLE_LENGTH];
  GetWindowText(hwnd,szTitle,MAX_TITLE_LENGTH);
  CString strTitle = szTitle;
  if (strTitle.Find((LPCTSTR)global_strTitle) != -1)
  {
   hWndWindow = hwnd;
   bRet = FALSE;
  }
 }
 return bRet;
}

 

...
HWND CRemote::GeneralSearchWindow(LPCTSTR lpWindowName )
{
 global_strTitle = lpWindowName;
 EnumWindows((WNDENUMPROC)EnumWndProc,0);
 return hWndWindow;
}

...

//查询代码
CRemote objNotepad;
HWND hWndNotepad = objNotepad.GeneralSearchWindow(_T("远程"));

 

原创粉丝点击