mouse_event无效的有关问题,版主们帮忙看看
mouse_event无效的问题,版主们帮忙看看啊
有一个贱贱的程序,我现在要调用它:
另PostMessage神马的都弱爆了,根本对它不起作用,请问对这个蠢货还有其它绝招或思路么?
------解决方案--------------------
看看有没有这个函数:::mouse_event,就上前面加::,这表明是API的函数,不是MFC封装过的,如果有这个函数,这个函数的第一个参数应该就是窗口句柄,也就是把消息发送到这个句柄指定的窗口
------解决方案--------------------
确定坐标没有问题?
------解决方案--------------------
Note This function has been superseded. Use SendInput instead.
------解决方案--------------------
兄弟,你又开贴了?
我还以为你解决了呢。实在不行,虚拟鼠标能接受不?
要写驱动。完全与硬件鼠标操作一致。
------解决方案--------------------
typedef struct tagMOUSEINPUT {
LONG dx;
LONG dy;
DWORD mouseData;
DWORD dwFlags;
DWORD time;
ULONG_PTR dwExtraInfo;
} MOUSEINPUT, *PMOUSEIN
typedef struct tagINPUT {
DWORD type;
union {
MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi;
};
} INPUT, *PINPUT;
input结构中的mouse结构里面有
dx dy就是!
------解决方案--------------------
先找个别的程序测试一下你的代码,不过感觉
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
这两句是没有问题的。
------解决方案--------------------
你是不是焦点没设置在那个程序上面才导致失效的?
------解决方案--------------------
有一个贱贱的程序,我现在要调用它:
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);
另PostMessage神马的都弱爆了,根本对它不起作用,请问对这个蠢货还有其它绝招或思路么?
postmessage
mouse_event
模拟程序点击
------解决方案--------------------
看看有没有这个函数:::mouse_event,就上前面加::,这表明是API的函数,不是MFC封装过的,如果有这个函数,这个函数的第一个参数应该就是窗口句柄,也就是把消息发送到这个句柄指定的窗口
------解决方案--------------------
确定坐标没有问题?
------解决方案--------------------
Note This function has been superseded. Use SendInput instead.
------解决方案--------------------
兄弟,你又开贴了?
我还以为你解决了呢。实在不行,虚拟鼠标能接受不?
要写驱动。完全与硬件鼠标操作一致。
------解决方案--------------------
typedef struct tagMOUSEINPUT {
LONG dx;
LONG dy;
DWORD mouseData;
DWORD dwFlags;
DWORD time;
ULONG_PTR dwExtraInfo;
} MOUSEINPUT, *PMOUSEIN
typedef struct tagINPUT {
DWORD type;
union {
MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi;
};
} INPUT, *PINPUT;
input结构中的mouse结构里面有
dx dy就是!
------解决方案--------------------
先找个别的程序测试一下你的代码,不过感觉
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
这两句是没有问题的。
------解决方案--------------------
你是不是焦点没设置在那个程序上面才导致失效的?
------解决方案--------------------
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"));