首页 新闻 会员 周边

MFC Windows API 遍历获取窗口句柄和标题

0
悬赏园豆:50 [待解决问题]
BOOL CALLBACK CwgDlg::EnumWindowsProc(HWND hwnd, DWORD lParam) 
{
    // 窗口是否可视
    if (!::IsWindowVisible(hwnd))
    {
        return TRUE;
    }

    // 窗口是否可激活
    if (!::IsWindowEnabled(hwnd))
    {
        return TRUE;
    }
    // Do something
    char szTitle[255];
    setlocale(LC_ALL,"");
    ::GetWindowText(hwnd, (LPWSTR)szTitle, sizeof(szTitle));
    CString str(szTitle);
    sztext[sum]=str;
    sum = sum + 1 ;
    //m_combo.AddString(_T("鸡啄米"));  无法使使用m_combo变量

   return TRUE;
}
void CwgDlg::OnBnClickedButton1()
{
  
// TODO: Add your control notification handler code here
  EnumWindows((WNDENUMPROC)EnumWindowsProc, 0);
  CString str;
  str.Format(_T(
"%d"), sum);
  MessageBox(str,_T(
"程序运行结果"),MB_OK);
  sum
= 0 ;

}


EnumWindows遍历窗口后使用句柄获取标题GetWindowText取得的全都是乱码和空值,求大神指点


问题补充:

需要调试的私信我 ,给你发代码

Black丶Crow的主页 Black丶Crow | 初学一级 | 园豆:154
提问于:2016-03-15 16:11
< >
分享
所有回答(1)
0

GetWindowText依赖于你的程序是否为unicode版本的,VS中查看szTitle内存地址的信息,可以看到十六进制的字符是unicode还是GBK

2012 | 园豆:21230 (高人七级) | 2016-03-16 08:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册