From 8e8c052b0c6e900c8e0becbfac5c5a4f8802b142 Mon Sep 17 00:00:00 2001 From: suti7yk5032 Date: Wed, 7 Aug 2024 11:37:23 +0900 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E9=87=8D=E8=B5=B7=E5=8B=95=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E3=81=AE=E3=81=9F=E3=82=81=E3=81=AE=E5=87=A6=E7=90=86?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dislocker_client.py | 49 ++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/dislocker_client.py b/dislocker_client.py index 55748c7..04c374c 100644 --- a/dislocker_client.py +++ b/dislocker_client.py @@ -39,16 +39,28 @@ elif os.path.isfile(client_config_path): client_config = json.load(r) def init(**kwargs): - master_password = master_password_gen() - 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["initial"] = 0 - if "pc_number" in kwargs: - client_config["pc_number"] = int(kwargs["pc_number"]) + 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: - client_config["pc_number"] = 1 - with open(client_config_path, "w") as w: - json.dump(client_config, w, indent=4) + if client_config["initial"] == 1: + master_password = master_password_gen() + 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["initial"] = 0 + if "pc_number" in kwargs: + client_config["pc_number"] = int(kwargs["pc_number"]) + else: + client_config["pc_number"] = 1 + with open(client_config_path, "w") as w: + json.dump(client_config, w, indent=4) + return 0 + else: + return 0 + class App(customtkinter.CTk): @@ -371,15 +383,24 @@ if __name__ == '__main__': args = sys.argv if len(args) >= 2: if args[1] == "stop": - monitor = Monitor() - monitor.signal_handler() + init_result = init() + if init_result == 1: + warning_msgbox = tkinter.messagebox.showwarning(title=f"{app_name} | 多重起動エラー", message=f"もう終了処理を行っています。\nPCがシャットダウンするまで、もう少しお待ちください。") + else: + monitor = Monitor() + monitor.signal_handler() 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: print("引数エラー。") else: - if client_config["initial"] == 1: - init() + init_result = init() + if init_result == 1: + warning_msgbox = tkinter.messagebox.showwarning(title=f"{app_name} | 多重起動エラー", message=f"すでに {app_name} は実行されています。\n正常に起動しない場合は、既に起動しているプロセスを終了してから、もう一度起動してみてください。") else: app = App() app.protocol("WM_DELETE_WINDOW", app.handler_close)