多重起動防止のための処理追加

This commit is contained in:
suti7yk5032 2024-08-07 11:37:23 +09:00
parent b5285c0f21
commit 8e8c052b0c

View file

@ -39,6 +39,14 @@ elif os.path.isfile(client_config_path):
client_config = json.load(r) client_config = json.load(r)
def init(**kwargs): def init(**kwargs):
sp_startupinfo = subprocess.STARTUPINFO()
sp_startupinfo.dwFlags = subprocess.STARTF_USESHOWWINDOW
sp_startupinfo.wShowWindow = subprocess.SW_HIDE
task_exist = subprocess.run('tasklist /fi "IMAGENAME eq dislocker_client.exe"', startupinfo=sp_startupinfo, stdout=subprocess.PIPE, text=True)
if 'dislocker_client.exe' in task_exist.stdout == True:
return 1
else:
if client_config["initial"] == 1:
master_password = master_password_gen() master_password = master_password_gen()
msgbox = tkinter.messagebox.showinfo(title=f"{app_name} | 初回起動を検出", message=f"初回起動のようです。\nマスターパスワードを記録しておいてください。\nこれ以降二度と表示されることはないでしょう。\n\n{master_password["password"]}\n\nまた、認証先サーバーの接続先を指定してください。ロックを解除できなくなります。") msgbox = tkinter.messagebox.showinfo(title=f"{app_name} | 初回起動を検出", message=f"初回起動のようです。\nマスターパスワードを記録しておいてください。\nこれ以降二度と表示されることはないでしょう。\n\n{master_password["password"]}\n\nまた、認証先サーバーの接続先を指定してください。ロックを解除できなくなります。")
client_config["master_password_hash"] = master_password["password_hash"] client_config["master_password_hash"] = master_password["password_hash"]
@ -49,6 +57,10 @@ def init(**kwargs):
client_config["pc_number"] = 1 client_config["pc_number"] = 1
with open(client_config_path, "w") as w: with open(client_config_path, "w") as w:
json.dump(client_config, w, indent=4) json.dump(client_config, w, indent=4)
return 0
else:
return 0
class App(customtkinter.CTk): class App(customtkinter.CTk):
@ -371,15 +383,24 @@ if __name__ == '__main__':
args = sys.argv args = sys.argv
if len(args) >= 2: if len(args) >= 2:
if args[1] == "stop": if args[1] == "stop":
init_result = init()
if init_result == 1:
warning_msgbox = tkinter.messagebox.showwarning(title=f"{app_name} | 多重起動エラー", message=f"もう終了処理を行っています。\nPCがシャットダウンするまで、もう少しお待ちください。")
else:
monitor = Monitor() monitor = Monitor()
monitor.signal_handler() monitor.signal_handler()
elif args[1] == "setup": elif args[1] == "setup":
init(pc_number=args[2]) init_result = init(pc_number=args[2])
if init_result == 1:
warning_msgbox = tkinter.messagebox.showwarning(title=f"{app_name} | 多重起動エラー", message=f"すでに {app_name} は実行されています。\n正常に起動しない場合は、既に起動しているプロセスを終了してから、もう一度起動してみてください。")
else:
pass
else: else:
print("引数エラー。") print("引数エラー。")
else: else:
if client_config["initial"] == 1: init_result = init()
init() if init_result == 1:
warning_msgbox = tkinter.messagebox.showwarning(title=f"{app_name} | 多重起動エラー", message=f"すでに {app_name} は実行されています。\n正常に起動しない場合は、既に起動しているプロセスを終了してから、もう一度起動してみてください。")
else: else:
app = App() app = App()
app.protocol("WM_DELETE_WINDOW", app.handler_close) app.protocol("WM_DELETE_WINDOW", app.handler_close)