我想打开Microsoft Security Essential程序,然后单击VC立即扫描按钮。我可以找到窗口,但找不到控制权。这是我的代码,当我运行此代码时显示控件未找到。我尝试在运行程序中单击“浏览”按钮测试此代码,但是当我尝试使用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 ++ with button,它显示如下
Caption : &Scan now
Class : ALT:BUTTON
I use FindWindowEx() like this cb = FindWindowEx(w,NULL,NULL,_T("&Scan now"));
但未找到Control。
答案 0 :(得分:6)
FindWindowEx
函数不会“向下钻取”到窗口层次结构中 - 它只会查看您要求它搜索的子窗口。话虽如此,并且从快速查看Microsoft Security Essentials用户界面的屏幕截图,我99%肯定您正在寻找的“立即扫描”按钮不是直接子窗口主要的Microsoft Security Essentials窗口。这就是你的FindWindowEx
电话失败的原因。
我无权访问Microsoft Security Essentials软件,但有权访问Spy++
,应该很容易找到“立即扫描”按钮的父级是谁:Microsoft Security Essentials窗口或其他窗口,它本身就是Microsoft Security Essentials窗口的子窗口。