gpt4 book ai didi

c++ - 我无法使用 FindWindowEx() 来查找控件

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:08 32 4
gpt4 key购买 nike

我想打开 Microsoft Security Essential 程序,然后用 VC 单击“立即扫描”按钮。我可以找到窗口但找不到控件。这是我的代码,当我运行此代码时它显示 Control not found 。我尝试通过单击“运行程序”中的“浏览”按钮来测试此代码,它可以正常工作,但是当我尝试与 Microsoft Security Essential 一起使用时,它找不到控件。我不知道为什么这个控件可能在 Tab 中。如何使用 FindWindowEx() 单击 Microsoft Security Essential 中的立即扫描按钮?

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++,它显示如下

Caption : &Scan now
Class : ALT:BUTTON
I use FindWindowEx() like this cb = FindWindowEx(w,NULL,NULL,_T("&Scan now"));

但未找到控件。

最佳答案

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

我无权访问 Microsoft Security Essentials 软件,但可以访问 Spy++ 应该很容易找到“立即扫描”按钮的父级是谁:Microsoft Security Essentials窗口或本身是 Microsoft Security Essentials 窗口子窗口的另一个窗口。

关于c++ - 我无法使用 FindWindowEx() 来查找控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14891486/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com