最近使用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.csdn.net/download/u014563989/9937193