vc6.0编程如何在程序内模拟鼠标键盘操作?(急急急,在线高分等待)

我目前用vc做一个程序,要在程序内模拟鼠标键盘,即是要在程序内实现自动移动鼠标、自动输入、自动点击等功能,注意了,我的程序是要在后台隐藏运行的,所以 SetCursorPos、mouse_event这些不适应。
(补充:我的程序是这样的,我用单文档视图结构继承CHtmlView,做成一个自己的简单浏览器,需要在这个定制浏览器内自动点击等),高分真诚求助,希望大家写了代码能实现了再回答,不要光说理论哦!!

http://wenku.baidu.com/view/c8c141e84afe04a1b071de97.html?st=1(读写IO鼠标键盘驱动程序)
http://wenku.baidu.com/view/2ebaf5363968011ca3009195.html?st=1(向HtmlView发送鼠标键盘点击消息的代码)
这两个是我自己写的代码.
建议:定制浏览器的自动点击,使用模拟鼠标键盘的方式似乎不是很好.你在百度搜索一下"CHtmlView 点击",一般上都是使用IHTMLElement的click的方法点击.如果你想要更好的效果,那么可以下载一个visual sniffer,抓取数据并分析,然后再使用封包的方式,这样效果会更好追问

你的代码很乱,我看不懂,能用文字介绍下你 这两个代码的作用及用法吗??

追答

对于浏览器来说,第一个代码是不需要的,因为浏览器不会象游戏那样使sendmessage之类的函数失效.
第二个代码中
HWND GetFinallyWindow(HWND hParent, POINTS pt)函数是得到最终需要发送消息的窗口的句柄.写这个函数的理由是,你直接向浏览器窗口发送消息,比如向其中一个button发送鼠标点击消息,你直接向htmlview类发送是没有效果的,只有找到该button的窗口句柄,然后再sendmessage....
hParent一般是指htmlview类或者其他浏览器窗口类的句柄,pt是鼠标点击的位置,是相对于hPareng而言的.
int SendMouseClickMessage(HWND hWnd, POINTS pt)函数是向htmlview发送一个鼠标点击消息的.
SendMouseDbClickMessage函数向htmlview发送一个鼠标双击消息
int SendKeyDownMessage(HWND hWnd, DWORD dwKey)函数向htmlview类发送一个键盘按下的消息

int SendKeyUpMessage(HWND hWnd, DWORD dwKey)向htmlview发送一个键盘弹起的消息
pressctrlv函数向htmlview发送一个ctrl+v键的消息

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-07
拿两分就跑,越快越好。点鼠标不可能了,向应用程序发送消息吧。追问

只要能实现我所需要的在程序内模拟鼠标操作功能,不管是发送消息还是其他其他方法都可以,由于我基础薄弱,我需要关键具体实现的代码而不仅仅是理论哦

第2个回答  2012-05-09
你可以用  消息发送啊追问

恩,我看到网上很多都这么说,可我就是实现不了,你能自己先实现了功能再把代码贴上来给我吗?

第3个回答  2012-05-07
使用消息发送。追问

只要能实现我所需要的在程序内模拟鼠标操作功能,不管是发送消息还是其他其他方法都可以,由于我基础薄弱,我需要关键具体实现的代码而不仅仅是理论哦

追答

用win32的API
设置光标位置
SetCursorPos(x,y);
----------------------------------------------------
鼠标事件
mouse_event(MOUSEEVENTF_LEFTDOWN,1,1,1,1);
--------------------------------
键盘事件
keybd_event(VK_LWIN, 0, 0, 0);
keybd_event('L', 0, 0, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
keybd_event('L', 0, KEYEVENTF_KEYUP, 0);
------------------------------------------------
符号常量 十六进制值 指定的鼠标或键盘按键
  VK_LBUTTON 01 鼠标左键
  VK_RBUTTON 02 鼠标右键
  VK_CANCEL 03 Control-break 过程
  VK_MBUTTON 04 鼠标中键
  VK_BACK 08 BACKSPACE 键
  VK_TAB 09 TAB 键
  VK_CLEAR 0C CLEAR 键
  VK_RETURN 0D ENTER 键
  VK_SHIFT 10 SHIFT 键
  VK_CONTROL 11 CTRL 键
  VK_MENU 12 ALT 键
  VK_PAUSE 13 PAUSE 键
  VK_CAPITAL 14 CAPS LOCK 键
  VK_ESCAPE 1B ESC 键
  VK_SPACE 20 SPACEBAR
  VK_PRIOR 21 PAGE UP 键
  VK_NEXT 22 PAGE DOWN 键
  VK_END 23 END 键
  VK_HOME 24 HOME 键
  VK_LEFT 25 LEFT ARROW 键
  VK_UP 26 UP ARROW 键
  VK_RIGHT 27 RIGHT ARROW 键
  VK_DOWN 28 DOWN ARROW 键
  VK_SELECT 29 SELECT 键
  VK_EXECUTE 2B EXECUTE 键
  VK_SNAPSHOT 2C PRINT SCREEN键(用于Windows 3.0及以后版本)
  VK_INSERT 2D INS 键
  VK_DELETE 2E DEL 键
  VK_HELP 2F HELP 键
  ///////////////////////////////////////////////////
  对于字母键和非小键盘上的数字键,直接在单引号中加入该键就行.
  比如:a键:'A'
   1键:'1'
  //////////////////////////////////////////////

追问

我上面说了,SetCursorPos、mouse_event会影响鼠标的其他操作,不行

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网