首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不能使用FindWindowEx()查找控件

我不能使用FindWindowEx()查找控件
EN

Stack Overflow用户
提问于 2013-02-15 17:22:13
回答 1查看 2.5K关注 0票数 1

我想用VC打开Microsoft Security Essential程序,然后单击“立即扫描”按钮。我可以找到窗口,但找不到控件。这是我的代码,当我运行这段代码时,它显示未找到控件。我尝试使用Run程序中的单击Browse按钮来测试此代码,但当我尝试使用Microsoft Security Essential时,它找不到控件。我不知道为什么这个控件在Tab中。如何使用FindWindowEx()单击Microsoft Security Essential中的立即扫描按钮?

代码语言:javascript
复制
int run_ms(){   

    ShellExecute(NULL, L"open", L"C:/Program Files/Microsoft Security Client/msseces.exe", NULL, NULL, SW_SHOWNORMAL);

        HWND w;
    w=FindWindow(NULL, L"Microsoft Security Essentials");

        if(w==NULL)
                MessageBox(NULL,L"Not found",L"",MB_OK);

        else{
                HWND cb;
                cb = FindWindowEx(w,NULL,NULL,_T("&Scan now"));     

            if(cb!=NULL)
            {
                SendMessage(cb,WM_LBUTTONDOWN, NULL,NULL);
                SendMessage(cb,WM_LBUTTONUP, NULL,NULL);
            }
            else
                MessageBox(NULL,L"Control not found",L"",MB_OK);
        }

            return 0;
}

我在Microsoft Security Essential中使用Spy++和按钮,它显示如下

代码语言:javascript
复制
Caption : &Scan now
Class : ALT:BUTTON
I use FindWindowEx() like this cb = FindWindowEx(w,NULL,NULL,_T("&Scan now")); 

但它没有找到控制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-16 02:29:55

FindWindowEx函数不会“向下钻取”窗口层次结构-它只会查看您要搜索的任何内容的子窗口。话虽如此,通过快速查看Microsoft Security Essentials用户界面的屏幕截图,我可以99%地确定您正在寻找的"Scan now“按钮不是Microsoft Security Essentials主窗口的直接子窗口。这就是你的FindWindowEx调用失败的原因。

我没有访问微软安全包软件,但访问Spy++它应该很容易找到谁的父是“立即扫描”按钮:微软安全包窗口或另一个窗口,这本身就是微软安全包窗口的孩子。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14891486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档