一 基本概念

1.这里实现了电脑的安全报警系统,假如有人不小心动了你的电脑,立即触发报警系统。报警是通过pc机的声卡播放报警信号。

2.该的基础是对python的pyxhook和wave库的合理应用。

二 源码解析

1.定义报警声音播放函数from__future__import print_function

# Libraries we need
import pyxhook
import time import pyaudio
import wave filename = 'air_tone.wav' # Set chunk size of 1024 samples per data frame
chunk = 1024 # Open the sound file
wf = wave.open(filename, 'rb') def warning_func():
# Create an interface to PortAudio
p = pyaudio.PyAudio() # Open a .Stream object to write the WAV file to
# 'output = True' indicates that the sound will be played rather than recorded
stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),
channels = wf.getnchannels(),
rate = wf.getframerate(),
output = True) # Read data in chunks
data = wf.readframes(chunk) # Play the sound by writing the audio data to the stream
while data != '':
stream.write(data)
data = wf.readframes(chunk) # Close and terminate the stream
stream.close()
p.terminate() # This function is called every time a key is presssed
def kbevent(event):
global running
# print key info
print(event) # If the ascii value matches spacebar, terminate the while loop
if event.Ascii == 32:
running = False
else:
warning_func() def onMouseEvent(event):
print(event)
warning_func() if __name__=='__main__': # Create hookmanager
hookman = pyxhook.HookManager()
# Define our callback to fire when a key is pressed down
hookman.KeyDown = kbevent
# Hook the keyboard
hookman.HookKeyboard() # Hook the mouse
hookman.MouseAllButtonsDown = onMouseEvent
hookman.HookMouse() # Start our listener
hookman.start() # Create a loop to keep the application running
running = True
while running:
time.sleep(0.1) # Close the listener when we are done
hookman.cancel()

三 总结

1.上面的源码基本实现了这个功能,不过,还需有一些完善的地方。

2. 除了报警,日志保存也是一个非常必要的措施

3.程序不能用快捷键杀死

4.接下来我们拭目以待。

基于python的PC电脑报警系统的更多相关文章

  1. 【Machine Learning】决策树案例:基于python的商品购买能力预测系统

    决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本 ...

  2. 程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

  3. 基于Python的Web应用开发实践总结

    基于Python的Web应用开发学习总结 项目地址   本次学习采用的是Flask框架.根据教程开发个人博客系统.博客界面如图所示. 整个学习过程收获很多,以下是学习总结. 1.virtualenv ...

  4. 基于Python的数据分析(2):字符串编码

    在上一篇文章<基于Python的数据分析(1):配置安装环境>中的第四个步骤中我们在python的启动步骤中强制要求加载sitecustomize.py文件并设置其默认编码为"u ...

  5. 基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 个人技术博客:http://www.cnblogs.com/M ...

  6. 符号执行-基于python的二进制分析框架angr

    转载:All Right 符号执行概述 在学习这个框架之前首先要知道符号执行.符号执行技术使用符号值代替数字值执行程序,得到的变量的值是由输入变 量的符号值和常量组成的表达式.符号执行技术首先由Kin ...

  7. python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学

    首发于:python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=431 本文 ...

  8. 基于python的性能测试工具–locust

    现在有很多的性能测试工具,比如说我们熟悉的loadrunner.jmeter.ab.webbench等等,这些工具如果对一个没用过的朋友来说,学习起来比较不容易,但是如果你能看懂python代码,会写 ...

  9. 看我如何基于Python&Facepp打造智能监控系统

    由于种种原因,最近想亲自做一个基于python&facepp打造的智能监控系统. 0×00:萌芽 1:暑假在家很无聊 想出去玩,找不到人.玩个lol(已卸载),老是坑人.实在是无聊至极,不过, ...

  10. selenium2自动化测试实战--基于Python语言

    自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 ...

随机推荐

  1. Web 3.0 - 圈里的百科

    Web3.0只是由业内人员制造出来的概念词语,最常见的解释是,网站内的信息可以直接和其他网站相关信息进行交互,能通过第三方信息平台同时对多家网站的信息进行整合使用:用户在互联网上拥有自己的数据,并能在 ...

  2. 【双指针】双指针算法详解两道经典OJ【力扣27,力扣26,力扣38】超详细算法教程

    [双指针]双指针算法详解两道经典OJ[力扣27,力扣26,力扣38]超详细算法教程 今天又又到了我们刷力扣题的时间啦! 今天博主给大家带来的三道题是: 27. 移除元素 26. 删除有序数组中的重复项 ...

  3. 升腾C92 刷 OpenWrt 作旁路由设置 DNS 服务、扩容分区、设置 swap

    最新博客文章链接 文字更新时间:2024/02/04 一直知道 OpenWrt 经常拿来做软路由软件.最近买了个二手小主机升腾 C92 来做旁路由服务器,其被归为瘦客户机一类,感觉和工控机差不多,现价 ...

  4. 洛谷P3612 [USACO17JAN] Secret Cow Code S

    [USACO17JAN] Secret Cow Code S 题面翻译 奶牛正在试验秘密代码,并设计了一种方法来创建一个无限长的字符串作为其代码的一部分使用. 给定一个字符串,让后面的字符旋转一次(每 ...

  5. 基于IO端口检测虚拟机

    通过执行特权指令探测 Vmware: 因为在虚拟机中指定功能号 0xa 则会从指定端口获取虚拟机版本信息到指定的目的操作数地址: 另外 0x14 则是获取虚拟机内存大小,当获取的值大于0说明在虚拟机中 ...

  6. Linux-grep或和与操作

    一.或(or)操作1.使用选项 -Egrep -E 'a1|a2'filename // 找出文件(filename)中包含a1或者包含a2的行 2.使用egrepegrep 'a1|a2' file ...

  7. Kubernetes 漫游:Controller Manager

    Controller Manager Controller Manager 是控制平面的一个重要组件,负责维护 Kubernetes 集群的整体状态. 流程: 在集群中 Controller Mana ...

  8. JS Leetcode 213. 打家劫舍 II 题解分析,在动态规划基础上感受分治算法的魅力

    壹 ❀ 引 本题来自LeetCode 213. 打家劫舍 II,难度中等,属于前面我们做过的198. 打家劫舍的升级版,难度同样为中等,题目描述如下: 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内 ...

  9. JS leetcode 猜数字 题解分析,我以为题目在第八层我在第一层,其实我在第三层题目在第一层

    壹 ❀ 引 今天来做一道简单到让我一度怀疑题目本意的题目,题目来自leetcode LCP 01. 猜数字,题目描述如下: 小A 和 小B 在玩猜数字.小B 每次从 1, 2, 3 中随机选择一个,小 ...

  10. BasicSample项目说明

    整个示例项目,两个Fragment,ProductListFragment和ProductFragment,一个MainActivity.在MainActivity里面展示的是ProductListF ...