From 78114d3f040c0070d693b314d8aa9510eb49f48d Mon Sep 17 00:00:00 2001 From: suti7yk5032 Date: Wed, 24 Jul 2024 23:34:49 +0900 Subject: [PATCH] =?UTF-8?q?=E5=BC=95=E6=95=B0stop=E3=81=A7=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=81=9C=E6=AD=A2=E5=87=A6=E7=90=86=E3=81=A8=E3=82=B7?= =?UTF-8?q?=E3=83=A3=E3=83=83=E3=83=88=E3=83=80=E3=82=A6=E3=83=B3=E3=82=92?= =?UTF-8?q?=E5=90=8C=E6=99=82=E3=81=AB=E8=A1=8C=E3=81=88=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dislocker_client.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/dislocker_client.py b/dislocker_client.py index a38649c..4eeda44 100644 --- a/dislocker_client.py +++ b/dislocker_client.py @@ -234,8 +234,8 @@ class Monitor(): monitor_thread = threading.Thread(target=self.run) monitor_thread.start() - def signal_handler(self, signum, frame): - print("シャットダウンを検出。") + def signal_handler(self): + print("停止処理を実行。") stop_url = client_config["auth_host_url"] + "/stop" stop_json = { "pc_number": int(client_config["pc_number"]) @@ -244,13 +244,18 @@ class Monitor(): responce = requests.post(stop_url, json=stop_json) if responce.status_code == 200: print("停止処理は成功しました。") - self.exit() else: print("内部エラーにより停止処理に失敗しました。") + result_msgbox = tkinter.messagebox.showwarning(title=f"{app_name} | エラー", message=f"内部エラーにより停止処理に失敗しました。\nDiscordサーバーの指示に従って、停止処理を自身で行ってください。") except: print("ネットワークエラーにより停止処理に失敗しました。") + result_msgbox = tkinter.messagebox.showwarning(title=f"{app_name} | エラー", message=f"ネットワークエラーにより停止処理に失敗しました。\nDiscordサーバーの指示に従って、停止処理を自身で行ってください。") finally: - sys.exit() + self.shutdown() + + def shutdown(self): + logout_command = subprocess.run(['shutdown', '/s', '/t', '1']) + def run(self): signal.signal(signal.SIGTERM, self.signal_handler) @@ -296,6 +301,14 @@ if client_config["initial"] == 1: else: if __name__ == '__main__': - app = App() - app.protocol("WM_DELETE_WINDOW", app.handler_close) - app.mainloop() + args = sys.argv + if len(args) >= 2: + if args[1] == "stop": + monitor = Monitor() + monitor.signal_handler() + else: + print("引数エラー。") + else: + app = App() + app.protocol("WM_DELETE_WINDOW", app.handler_close) + app.mainloop()