16,547
社区成员




hMain = ::FindWindow(NULL,L"有信");
::SetWindowPos(hMain, HWND_TOPMOST, 0, 0, 0, 0,SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED);
//使窗口置顶并获取焦点 测试上一句对它无效 下面这一段才激活窗口
typedef void (WINAPI *PSWITCHTOTHISWINDOW) (HWND,BOOL);
PSWITCHTOTHISWINDOW SwitchToThisWindow;
HMODULE hUser32=GetModuleHandle(_T("user32"));
SwitchToThisWindow=(PSWITCHTOTHISWINDOW)GetProcAddress(hUser32,"SwitchToThisWindow");
SwitchToThisWindow(hMain,TRUE);
CRect rc;
CWnd* pParent = CWnd::FromHandle(hMain);
pParent->GetWindowRect(&rc);
//设置按钮位置并点击 但程序并无反应 keybd_event发送到编辑框也无反应
SetCursorPos(rc.left + 430, rc.top + 135);// 505 235
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
lpPoint.x = 160 + rc.left;
lpPoint.y = rc.top + 350;
// SetCursorPos(lpPoint.x, lpPoint.y);
int dx = (160 + rc.left)*65535/width;
int dy = (rc.top + 350)*65535/height;
int SuccessAction1,SuccessAction2,SuccessAction3;
INPUT MyMouseInput[3];
MyMouseInput[0].type = INPUT_MOUSE;
MyMouseInput[0].mi.dx = dx;
MyMouseInput[0].mi.dy = dy;
MyMouseInput[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE;
MyMouseInput[0].mi.mouseData = NULL;
MyMouseInput[0].mi.dwExtraInfo = NULL;
MyMouseInput[0].mi.time = NULL;
Sleep(200);
//typedef void (WINAPI *PSWITCHTOTHISWINDOW) (HWND,BOOL);
//PSWITCHTOTHISWINDOW SwitchToThisWindow;
//HMODULE hUser32=GetModuleHandle(_T("user32"));
//SwitchToThisWindow=(PSWITCHTOTHISWINDOW)GetProcAddress(hUser32,"SwitchToThisWindow");
//SwitchToThisWindow(hMain,TRUE);
SuccessAction1 = SendInput(3,MyMouseInput,sizeof(INPUT));
MyMouseInput[1].type = INPUT_MOUSE;
MyMouseInput[1].mi.dx = dx;
MyMouseInput[1].mi.dy = dy;
MyMouseInput[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
MyMouseInput[1].mi.mouseData = NULL;
MyMouseInput[1].mi.dwExtraInfo = NULL;
MyMouseInput[1].mi.time = NULL;
Sleep(200);
SuccessAction2 = SendInput(3,MyMouseInput,sizeof(INPUT));
MyMouseInput[1].type = INPUT_MOUSE;
MyMouseInput[1].mi.dx = dx;
MyMouseInput[1].mi.dy = dy;
MyMouseInput[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
MyMouseInput[1].mi.mouseData = NULL;
MyMouseInput[1].mi.dwExtraInfo = NULL;
MyMouseInput[1].mi.time = NULL;
Sleep(200);
SuccessAction3 = SendInput(3,MyMouseInput,sizeof(INPUT));
typedef void (WINAPI *PSWITCHTOTHISWINDOW) (HWND,BOOL);
PSWITCHTOTHISWINDOW SwitchToThisWindow;
HMODULE hUser32=GetModuleHandle(_T("user32"));
SwitchToThisWindow=(PSWITCHTOTHISWINDOW)GetProcAddress(hUser32,"SwitchToThisWindow");
SwitchToThisWindow(hMain,TRUE);
int dx = (160 + rc.left)*65535/width;
int dy = (rc.top + 350)*65535/height;
int SuccessAction1,SuccessAction2,SuccessAction3;
INPUT MyMouseInput[3];
MyMouseInput[0].type = INPUT_MOUSE;
MyMouseInput[0].mi.dx = dx;
MyMouseInput[0].mi.dy = dy;
MyMouseInput[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE;
MyMouseInput[0].mi.mouseData = NULL;
MyMouseInput[0].mi.dwExtraInfo = NULL;
MyMouseInput[0].mi.time = NULL;
Sleep(200);
//这里激活窗口的话 鼠标位置就不动了 不激活的话 位置对的 单击没效果
typedef void (WINAPI *PSWITCHTOTHISWINDOW) (HWND,BOOL);
PSWITCHTOTHISWINDOW SwitchToThisWindow;
HMODULE hUser32=GetModuleHandle(_T("user32"));
SwitchToThisWindow=(PSWITCHTOTHISWINDOW)GetProcAddress(hUser32,"SwitchToThisWindow");
SwitchToThisWindow(hMain,TRUE);
SuccessAction1 = SendInput(3,MyMouseInput,sizeof(INPUT));
MyMouseInput[1].type = INPUT_MOUSE;
MyMouseInput[1].mi.dx = dx;
MyMouseInput[1].mi.dy = dy;
MyMouseInput[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
MyMouseInput[1].mi.mouseData = NULL;
MyMouseInput[1].mi.dwExtraInfo = NULL;
MyMouseInput[1].mi.time = NULL;
Sleep(200);
SuccessAction2 = SendInput(3,MyMouseInput,sizeof(INPUT));
MyMouseInput[1].type = INPUT_MOUSE;
MyMouseInput[1].mi.dx = dx;
MyMouseInput[1].mi.dy = dy;
MyMouseInput[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
MyMouseInput[1].mi.mouseData = NULL;
MyMouseInput[1].mi.dwExtraInfo = NULL;
MyMouseInput[1].mi.time = NULL;
Sleep(200);
SuccessAction3 = SendInput(3,MyMouseInput,sizeof(INPUT));
HWND hWnd = ::FindWindow(NULL, _T("BBB"));
if(NULL == hWnd)
{
return ;
}
if(::IsIconic(hWnd))
{
::ShowWindow(hWnd, SW_RESTORE);
}
::BringWindowToTop(hWnd);
::SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
HWND hButton = ::FindWindowEx(hWnd, NULL, _T("Button"), _T("Cancel"));
if(NULL == hButton)
{
return ;
}
RECT rc = {0};
::GetWindowRect(hButton, &rc);
POINT ptOrg;
GetCursorPos(&ptOrg);
POINT pt;
pt.x = rc.left + (rc.right - rc.left) / 2;
pt.y = rc.top + (rc.bottom - rc.top) / 2;
SetCursorPos(pt.x, pt.y);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
SetCursorPos(ptOrg.x, ptOrg.y);