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()