我想用VC打开Microsoft Security Essential程序,然后单击“立即扫描”按钮。我可以找到窗口,但找不到控件。这是我的代码,当我运行这段代码时,它显示未找到控件。我尝试使用Run程序中的单击Browse按钮来测试此代码,但当我尝试使用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")); 但它没有找到控制。
发布于 2013-02-16 02:29:55
FindWindowEx函数不会“向下钻取”窗口层次结构-它只会查看您要搜索的任何内容的子窗口。话虽如此,通过快速查看Microsoft Security Essentials用户界面的屏幕截图,我可以99%地确定您正在寻找的"Scan now“按钮不是Microsoft Security Essentials主窗口的直接子窗口。这就是你的FindWindowEx调用失败的原因。
我没有访问微软安全包软件,但访问Spy++它应该很容易找到谁的父是“立即扫描”按钮:微软安全包窗口或另一个窗口,这本身就是微软安全包窗口的孩子。
https://stackoverflow.com/questions/14891486
复制相似问题