1、EnumWindows(EnumWindowsProc, (LPARAM)NULL);
该函数枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数。回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止。
2、
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
TCHAR szBuffer[256]= {0};
GetWindowText(hwnd, szBuffer, sizeof(szBuffer));//窗口名称
//GetClassName(hwnd, szBuffer, sizeof(szBuffer) / sizeof(TCHAR)); // 窗口类名
CString sztmp = szBuffer;
if (sztmp.Find(L"http://cvs.ehire.51job.com/?num=") == 0)
{
::ShowWindow(hwnd, SW_HIDE); //隐藏窗口
}
else if (sztmp.Find(L"安全警告") >= 0 || sztmp.Find(L"安全警报") >= 0)//IE 8 Adobe Flash Player弹窗
{
//#32770 (Dialog)
int nCtrlId = 0x7;
HWND hWndCtrl = GetDlgItem(hwnd, nCtrlId);
if (hWndCtrl)
{
LOG_INFO(_T("安全警告-GetDlgItem-Btn成功"));
}
else
{
nCtrlId = IDOK;
hWndCtrl = GetDlgItem(hwnd, nCtrlId);
if(!hWndCtrl)
{
LOG_INFO(_T("安全警告-GetDlgItem-Btn失败"));
}
}
::PostMessage( hwnd, WM_COMMAND, MAKELONG(nCtrlId, BN_CLICKED), (LPARAM)hWndCtrl); //模拟点击按钮
}
else if (sztmp.Find(_T("51job_")) == 0)
{
LOG_INFO(_T("szBuffer:%s"), szBuffer);
PostMessage(hwnd, WM_CLOSE, 0 ,0); //关闭窗口
}
return TRUE ;
}
3、
void AutoClickThreadProc(LPVOID param)
{
HWND hwnd = NULL;
hwnd = FindWindow(NULL, _T("文件下载")); //窗口句柄
if (hwnd)
{
LOG_INFO(_T("FindWindow:%x"), hwnd);
PostMessage(hwnd, WM_NCACTIVATE, TRUE, NULL); //激活窗口
int nCtrlId = 0x114A; //"打开"控件ID 0x114A
HWND HwndCtrl = GetDlgItem(hwnd, nCtrlId); //控件句柄
if (HwndCtrl)
{
LOG_INFO(_T("Send WM_COMMAND"));
::PostMessage(hwnd, WM_COMMAND, MAKELONG(nCtrlId, BN_CLICKED), (LPARAM)HwndCtrl); // 模拟点击“打开”按钮
}
}
}