我制作了一个 python 脚本,它基本上有一个 while 循环,等待特定的 exe 启动,一旦打开它就会关闭系统。 但问题是,exe 文件运行时会不断打开和关闭控制台窗口。
我也尝试使用 --noconsole 和 --windowed ,但仍然有一小会儿控制台窗口弹出并消失,这种情况不断重复,所以很明显有一个后台文件正在运行。
替代方案可能是不使用无限循环,但我无法弄清楚。
这是代码:
def process_exists(process_name):
call = 'TASKLIST', '/FI', f'imagename eq {process_name}'
output = subprocess.check_output(call).decode()
last_line = output.strip().split('\r\n')[-1]
return last_line.lower().startswith(process_name.lower())
def time ():
while True:
if process_exists("RobloxPlayerBeta.exe") or process_exists("RobloxPlayerLauncher.exe"):
os.system("shutdown /s")
if process_exists("Windows10Universal.exe"):
# os.system("shutdown /s")
print("Okay")
time()
帕纳夫。
不清楚如何执行脚本,我可能猜想您只需使用
python.exe
运行它即可。尝试使用 pythonw.exe
,它不会打开控制台窗口。
另一件事是在一个 .exe 文件中构建脚本并在启动时将其作为隐藏进程启动,您可以像这样实现:
pip install pyinstaller
pyinstaller --noconsole --onefile YOUR_SCRIPT.py
转换后的 .exe 文件将位于名为
.\dist
的 YOUR_SCRIPT.exe
文件夹中。
现在您可以重命名二进制文件,但您希望它在进程中显示。
最后,您必须将 .exe 文件添加到启动文件夹 (
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
) 以确保您的脚本始终处于活动状态。
如果您想停止该进程,请打开任务管理器中的“进程”选项卡并按名称终止该进程(
YOUR_SCRIPT.exe
)。
P.S.:这里有一个更清晰的脚本做同样的事情:
import os
import time
import subprocess
# List of processes to monitor
TARGET_PROCESSES = ["RobloxPlayerBeta.exe", "RobloxPlayerLauncher.exe"]
# Function to shut down the computer
def force_shutdown():
os.system("shutdown /s /f")
# Function to check if a process is running
def is_target_process_running():
try:
# Get the list of running processes
output = subprocess.check_output("tasklist", shell=True).decode()
for process in TARGET_PROCESSES:
if process in output:
return True
except Exception as e:
# Ignore errors, e.g., if "tasklist" fails
print(f"Error: {e}")
return False
# Main loop to monitor processes
def monitor_processes():
while True:
if is_target_process_running():
force_shutdown()
break # Stop monitoring after shutdown command
time.sleep(5) # Check every 5 seconds
if __name__ == "__main__":
monitor_processes()