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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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键的消息

参考技术A 拿两分就跑,越快越好。点鼠标不可能了,向应用程序发送消息吧。追问

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

参考技术B 你可以用  消息发送啊追问

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

参考技术C 使用消息发送。追问

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

追答

用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会影响鼠标的其他操作,不行

pyautogui模拟鼠标键盘操作

安装pyautogui库

快捷键win+R调出“运行”命令窗口,输出cmd
在cmd命令窗口输出:
pip install pyautogui
等待安装,直到完成

如何使用

  1. 打开python的IDLE
  2. 导入库:
    import pyautogui as pg
  3. 按需输入命令即可

命令

每条指令运行间隔(类似全局):
pg.PAUSE=1 %每隔1s运行一条程序

鼠标类命令

获取当前鼠标位置:
pg.position()
模拟鼠标左键:
pg.click(x,y)
模拟鼠标双击左键:
pg.doubleClick(x,y) #注意C是大写
模拟鼠标右键:
pg.click(x,y,button=‘right‘)
模拟鼠标移动:
pg.moveTo(x,y,time) %用time时长从当前移到目标位置
模拟鼠标拖动:
pg.dragTo(x,y,time,button=‘left‘)

键盘类命令

普通按键:
pg.press(‘key‘)
key:enter/left/ctrl
热键(快捷键):
pg.hotkey(‘key1‘,‘key2‘,‘key3‘)
按住不放型/释放按键:
pg.keyDown()/pg.keyUp()

键盘写入

键盘输入:
pg.write(‘‘,interval=time)

以上是关于vc6.0编程如何在程序内模拟鼠标键盘操作?(急急急,在线高分等待)的主要内容,如果未能解决你的问题,请参考以下文章

c语言 怎样模拟鼠标键盘操作?

写一个程序,模拟人操作鼠标,进行操作,包括点击,和使用应用程序(如:浏览器),求实现方法。

VC6.0程序编译后如何为程序添加图标

pyautogui模拟鼠标键盘操作

python怎么编是不是按键

模拟鼠标/触摸和键盘