小弟我有天在蝦扣的時候遇到了這個問題
先給大家看這串代碼
def checkIfProcessRunning(processName):
for proc in psutil.process_iter():
try:
if processName.lower() in proc.name().lower():
return True
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
return False;
簡單來說就是如果 processName (process list)有在 proc.name 裡面就會得到回答true
然後這是我呼叫的方式
while checkIfProcessRunning('VALORANT') == False:
os.system("cls")
print("正在等待VALORANT運行")
else:
os.system("cls")
os.system("title 已檢測到VALORANT執行")
我這樣寫在測試的時候一直都沒有問題
直到我把它編譯成exe的時候….
無論如何 “checkIfProcessRunning” 這個回應的都是True
一開始我以為是pyinstaller 在搞我
到最後我直接把 proc.name print 在 console 裡才發現問題
我把這個exe的檔名取成 “valorant change voice over”
這樣process list裡面的就會寫”valorant change voice over.exe”
(.py執行的話 process list會寫 python.exe)
難怪會直接回答True
所以把呼叫代碼改成這樣就好了
while checkIfProcessRunning('VALORANT.exe') == False:
os.system("cls")
print("正在等待VALORANT運行")
else:
os.system("cls")
os.system("title 已檢測到VALORANT執行")