最近使用PyUserInput的KeyboardEvent的时候遇到了KeyboardSwitch() missing 8的情况;
该问题具体表现在当你focus的那个进程的窗口title带中文, 就会出现上面那个错误, 如果都是英文或者其他ascii字符则不会;
查了些资料了解到是PyHook在Python3的windows下的一个bug, 我把程序直接丢到linux跑确实就没有出现上面的那个问题;
解决办法:
1. 换Linux系统, 完美解决;
2. 换为Python2, 这个没试过, 据说是可以;
3. 不使用KeyboardEvent, 键盘的监听用PyQt来代替解决, 不过挺麻烦的, 也不够完美;
4. 卸载掉PyHook, 安装PyHook-py3k, 完美解决, 但安装步骤繁琐, 但效果拔群, 具体如下:
(1) pip uninstall pyhook卸载掉原来的PyHook;
(2) 下载PyHook-py3k: https://github.com/Answeror/pyhook_py3k
(3) 下载swig,地址: http://www.swig.org/download.html
(4) 用swig编译安装PyHook-py3k模块: python setup.py build_ext --swig=..\swigwin-3.0.12\swig.exe
(5) 如果安装过程报错: vcvarsall.bat未找到, 则还需安装vs2009或以上版本, 我装的是vs2013, 装完之后添加环境变量:VS100COMNTOOLS=%VS120COMNTOOLS% , 这个环境变量根据具体情况可能要有所调整, 顶多就是把"120"改成"110"或
"130"或"140"而已; 重复(4)步, 没有报错就说明成功;
(6) 在pyhok_py3k-master里面执行pip install . ;这样PyHook模块就安装ok;
(7) 最后将_cpyHook.pyd和cpyHook.py复制到site-packages的根目录就完事了;
(8) 试试跑一下最开始出错的那个程序, 是不是成功了!
ps: 如果一直编译失败可以试试我这边编译好的模块, 直接安装模块即可:
http://download.youkuaiyun.com/download/u014563989/9937193