Python:通过自定义系统级快捷键来控制程序开始或停止记录日志(使用小技巧解决一个貌似无解的问题)
在之前写的一篇《Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中》文章中,有个读者留言如下:
这看似一个很平常的需求,但实现起来并不容易,如果用快捷键来控制一个程序干些别的事情那是非常容易的,但关键是本程序刚好是用hook来监控键盘,所以必须使用PumpMessages(),而此函数使用当前程序进入消息循环,它抓取每个鼠标和键盘事件。当我们的程序跑起来后,按下停止的热键时,也被此函数捕获,所以定义的任何热键均不能生效,具体实现及测试在文章《Python:通过自定义系统级快捷键来控制程序运行》中有所描述。
现在,我们换一个思路,既然已经监控到了按键,那就判断当前的按键是不是预先定义的热键,如果是,则可调用自己的处理函数,这样就找到了一个控制的入口,可以通过它实现我们想要的功能,注意此时不能让程序调用os.exit(0)让程序退出,否则再次按启动热键时就没法玩了。具体实现如下,代码中有详细注释,不再一一解释。
一、代码:
二、测试:
1、以下打印是按下热键时控制台输出(支持当前程序不是非激活窗口下按下热键)
2、日志内容:
可以看到,在23:16:58停止记录日志后,至23:17:05重新开始记录之前,所有的键盘和鼠标输入均没有记录,达到预期效果。
不积跬步,无以至千里;不积小流,无以成江海。