在别人的应用程序中,我想模拟一下鼠标双击功能。
下面是我想到的代码:
POINT point;
GetCursorPos (&point);
mouse_event(MOUSEEVENTF_LEFTDOWN,point.x ,point.y ,0,0);
mouse_event(MOUSEEVENTF_LEFTUP ,point.x ,point.y ,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,point.x ,point.y ,0,0);
mouse_event(MOUSEEVENTF_LEFTUP ,point.x ,point.y ,0,0);不过效果好象不对,感觉上象只单击了一次。
为什么会这样呢?另外,我在模拟鼠标和键盘的时候,常常出现下面这种情况:
选中一个 EDIT 框中的文本
模拟单击 Delte 键
然后 SetWindowsText "123"可是 效果确实 "23"
如果 SetWindowsText "1123"
这个时候的效果为: "123"似乎这里面有一种延迟。
我们想要做的,和应用程序自己处理的有一种不一致。
不知道到该如何解决?
请高手指点一下。谢谢先!
下面是我想到的代码:
POINT point;
GetCursorPos (&point);
mouse_event(MOUSEEVENTF_LEFTDOWN,point.x ,point.y ,0,0);
mouse_event(MOUSEEVENTF_LEFTUP ,point.x ,point.y ,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,point.x ,point.y ,0,0);
mouse_event(MOUSEEVENTF_LEFTUP ,point.x ,point.y ,0,0);不过效果好象不对,感觉上象只单击了一次。
为什么会这样呢?另外,我在模拟鼠标和键盘的时候,常常出现下面这种情况:
选中一个 EDIT 框中的文本
模拟单击 Delte 键
然后 SetWindowsText "123"可是 效果确实 "23"
如果 SetWindowsText "1123"
这个时候的效果为: "123"似乎这里面有一种延迟。
我们想要做的,和应用程序自己处理的有一种不一致。
不知道到该如何解决?
请高手指点一下。谢谢先!
解决方案 »
- 版主,没有满意答复的帖子怎么结?还要散分吗?
- 求救一个比较难的问题!!!
- OPENFILENAME结构中通过什么成员能得到文件的句柄呢?
- 在自己的DLL中使用CxImage图形包,DLL在使用中会链接出错,或者内存访问出错,这个CxImage包到底要如何编呢?请高人指点。
- 关于分割条的问题!
- 求助!我用LINK程序连接一个很简单的OBJ文件是提示找不到_printf和_mainCRTStartup,要怎么解决?
- 请问如何在设计菜单的时候添加子菜单啊?
- MFC 与 WIN32API
- 紧急求救!!!属性表怎么添加,我怎么找不到啊???还有那个选项卡控件???
- _stdcall和__stdcall起什么作用
- 我准备做多语言支持,从文件里读出一行,然后放到一个CEdit里,变成多行,即带\r\n的,但是文件里读出来的是带\r\n,CEdit却不是多行了,M
- 怎样将一组连续的图像序列转化为avi或mpg格式的流式文件啊?请高手指点!
下面的也是
PROCESS_INFORMATION procInfo;
::CreateProcess(NULL, "NOTEPAD.EXE", NULL, NULL, FALSE, 0, NULL, NULL,
&startInfo, &procInfo);
::WaitForInputIdle(procInfo.hProcess, 3000);
HWND hwnd = ::FindWindow("NOTEPAD", NULL);
CRect rc;
::GetWindowRect(hwnd, rc); // 我的分辨率是 1024*768,请改为自己的分辨率
mouse_event(MOUSEEVENTF_MOVE|MOUSEEVENTF_ABSOLUTE,
(rc.left+100)*65535/1024, (rc.top+10)*65535/768, 0, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0 ,0 ,0,0);
mouse_event(MOUSEEVENTF_LEFTUP, 0 ,0 ,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0 ,0 ,0,0);
mouse_event(MOUSEEVENTF_LEFTUP, 0 ,0 ,0,0);
ross给出的例子里面,好像也没有sleep.不知道多线程技术可不可以帮忙。
单击游戏外挂就这样写的
另外,例子当中,在x,y值上都设为 0,这样正确吗?
也是表示原地点击的意思吗?
感觉像是DirectX API
(rc.left+100)*65535/1024, (rc.top+10)*65535/768, 0, 0);这里假定 NOTEPAD 窗口左上角向右 100 向下 10 处是标题栏
并假定分辨率是 1024 * 768可以用 ::GetSystemMetrics 写比较通用的代码,这里只是为简便起见用了常量
mouse_event(MOUSEEVENTF_LEFTDOWN, 0 ,0 ,0,0);
mouse_event(MOUSEEVENTF_LEFTUP, 0 ,0 ,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0 ,0 ,0,0);
mouse_event(MOUSEEVENTF_LEFTUP, 0 ,0 ,0,0);
里面关于鼠标坐标全部设置为0
这样表示原地点击,是吗?
不过,我在VC 6.0里面可以调用这个函数。
看来我的帮助文件在内容上不够全面了。