• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python之模拟鼠标键盘动作具体实现

python之模拟鼠标键盘动作具体实现

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python 控制鼠标,python模拟鼠标点击,python 移动鼠标,python 鼠标事件,python 鼠标等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

上个月就打算开发个还算好玩的项目,但是一直没时间。这篇是此项目用到的一部分,

处理好此部分基本还差通信等方面的了。首先模拟鼠标键盘按下释放的动作,本人利用X11

这个库,所以要了解X11编程;其次,本身用c或者c++就可以实现了,但是由于本人是py

粉,所以总想把代码搬进python,所以本人就要实现python模块,本篇用的ctypes,以后会

把python的c扩展模块附上来的。

  1.X11编程

    首先简单的介绍一下X11吧,网上有介绍,本人就不重复了。我们知道X是以server与client

的方式提供服务的,我们想要使用其功能,我们就需要与server通信。使用

Display *XOpenDisplay(char *display_name)获得一个Display类型的句柄指针就可以了。

display_name可以是DISPLAY环境变量,用echo $DISPLAY输出是:0(这是本人linux mint输

出的)。如果display_name为NULL接口默认使用环境变量保存的值。X11编程常用的几个头

文件:

  #include <X11/Xlib.h>
  #include <X11/Xutil.h>
  #include <X11/Xos.h>

本人用到的是#include <X11/Xlib.h>和 #include <X11/extensions/XTest.h>.

XTest.h有我们模拟鼠标和键盘需要的接口XTestFakeButtonEvent、 XTestFakeMotionEvent和

XTestFakeKeyEvent。想了解更多信息只需要在终端上man加函数名即可获得。

比如XTestFakeMotionEvent接口:

Display *display;  //此值就是从XOpenDisplay获得
int screen_number; //让其为-1即可表示当前的屏幕
int x, y;          //屏幕位置
unsigned long delay; //延迟毫秒,让其为CurrentTime表示不延迟
</div>

最后我们要关闭Display句柄:XCloseDisplay(Display *display)。

接口实现如下:

上面注释掉的main函数可以作为测试用的,好了,我们把上面的代码保存为display.c

编译成一个共享库,需要X11和Xtst库。

编译后会生成libdisplay.so 。现在我们ctypes模块使用这个动态共享库。

     2.ctypes简单介绍和使用

    我们知道python中的类型与c中类型是不一样的,应该说没有一样的,就拿int想来说,

python也是把它看作PyObject类型来处理的。那么我们需要使用ctype提供的接口做类型的

转换。见:http://docs.python.org/2/library/ctypes.html#fundamental-data-types

此链接有张图详细的展现类型转换对应的接口。下面演示具体的操作吧。

我们通过CDLL()接口载入库:

然后就可以使用库中提供的接口了,但是上面dspopen()接口的返回值是Display类型的指针,

所以我们需要用c_void_p()转换一下:

之后就可以用d做处理了,代码如下:

上面的代码会在5秒后在鼠标指针处打开右键菜单。

利用ctypes使用c编写的库就讲这么多吧。以后会把c代码的部分写成python的c扩展再分享吧。

利用上面的模拟键盘和鼠标的接口可以做一些有意思的事情....

</div>

您可能想查找下面的文章:

  • Python捕捉和模拟鼠标事件的方法
  • python之模拟鼠标键盘动作具体实现

相关文章

  • 举例详解Python中循环语句的嵌套使用
  • 浅谈Python的垃圾回收机制
  • Python FTP操作类代码分享
  • python实现根据月份和日期得到星座的方法
  • 简单的连接MySQL与Python的Bottle框架的方法
  • Python使用multiprocessing实现一个最简单的分布式作业调度系统
  • python利用urllib实现爬取京东网站商品图片的爬虫实例
  • Python设计模式之抽象工厂模式
  • Python中关键字is与==的区别简述
  • 深入解析Python中的上下文管理器

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python简单检测文本类型的2种方法【基于文件头及cchardet库】
    • Python中的默认参数详解
    • 简单介绍Python的轻便web框架Bottle
    • Python中super()函数简介及用法分享
    • 在Python中操作列表之List.pop()方法的使用
    • 在python的类中动态添加属性与生成对象
    • python爬虫教程之爬取百度贴吧并下载的示例
    • python中日期和时间格式化输出的方法小结
    • python对json的相关操作实例详解
    • Python实现队列的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有