今天改动一个工具时遇到一个有意思的问题,打开某个窗体时弹出一些不相关的窗体。须要用户自己去手动点击后才干继续。保证不了自己主动处理,如今解说决方案记录一下,例如以下
主要使用windows提供的FindWindow和FindWindowEx,參考代码例如以下
wchar_t szClassName[256]; //用于记录窗体标题
StringCchPrintf(szClassName, 256, L"Client%02d - VMCalc", m_Index + 1);
HWND hwndDlg = FindWindow(L"#32770", szClassName); //当中#32770通过Spy++查找相应窗体类名
if (hwndDlg == NULL) return ;
HWND hwndButton = FindWindowEx(hwndDlg, NULL, L"Button", L"我已COPY VMCALC(&P)"); //在父窗体中查找相应子窗体
SetForegroundWindow(hwndDlg);
SetActiveWindow(hwndDlg); //父窗体置为活动窗体
SendMessage(hwndButton, BM_CLICK, 0, 0);//单击
SetForegroundWindow(hwndDlg);
SetActiveWindow(hwndDlg);//父窗体置为活动窗体
使用这样的简单方式就可以解决模拟单击等类似问题。