alroyso 1 year ago
parent
commit
03f0745302

+ 3 - 1
lib/app/modules/home/controllers/home_controller.dart

@@ -39,6 +39,7 @@ class HomeController extends GetxController {
   var connectStatus = Rx<ConnectionStatus>(ConnectionStatus.disconnected);
   var nodeModes = <NodeMode>[];
   var isConnect = false.obs;
+  var errAdminMsg = false.obs;
   bool get isRunning => connectStatus.value == ConnectionStatus.stopped && controllers.global.allowStatusUpdate;
   late final GlobalController globalController = controllers.global;
   StreamSubscription<RunningState>? _statusSubscription;
@@ -83,7 +84,7 @@ class HomeController extends GetxController {
 
   Future<void> handleButtonClick() async {
     if(userMode.value.enable != 1){
-      controllers.global.handleApiError("用户是禁用的,无法连接");
+      controllers.global.handleApiError("账号禁用,刷新账号状态,或者重启软件");
       return;
     }
 
@@ -223,6 +224,7 @@ class HomeController extends GetxController {
 
           if(!await isRunningAsAdmin()){
             controllers.global.updateMsg("网卡模式需要管理模式运行...");
+            errAdminMsg.value = true;
             return;
           }
         } else {

+ 18 - 0
lib/app/modules/home/views/home_view.dart

@@ -50,6 +50,24 @@ class HomeView extends GetView<HomeController> {
           ],),
 
           body: Obx(() {
+
+            if(controller.errAdminMsg.value){
+              controller.errAdminMsg.value = false;
+              Future.delayed(Duration.zero, () async {
+                bool? result = await controllers.dialog.showNormalDialog(
+                  title: "提示",
+                  content: '网卡模式需要用户管理员模式去运行,点击确定管理员模式重启如果无法重启,手动重启。',
+                  cancelText: "取消",
+                  enterText: "确定",
+                );
+                if (result != null && result) {
+                   await controllers.global.onRunAdmin();
+                } else {
+                  // User pressed "取消" or dismissed the dialog
+                }
+              });
+            }
+
             if (controllers.global.errorMsg.isNotEmpty) {
               // WidgetsBinding.instance.addPostFrameCallback((_) {
               //   ScaffoldMessenger.of(context).showSnackBar(

+ 11 - 7
windows/runner/main.cpp

@@ -7,14 +7,18 @@
 #include <protocol_handler/protocol_handler_plugin.h>
 int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
                       _In_ wchar_t *command_line, _In_ int show_command) {
-
-  HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"naiyouwl");
-  if (hwnd != NULL) {
-    DispatchToProtocolHandler(hwnd);
-    ::ShowWindow(hwnd, SW_NORMAL);
-    ::SetForegroundWindow(hwnd);
-    return EXIT_FAILURE;
+  if (wcsstr(command_line, L"--runas-admin") != NULL) {
+  // 这是一个提权重启,跳过实例检测
+  } else {
+    HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"naiyouwl");
+    if (hwnd != NULL) {
+      DispatchToProtocolHandler(hwnd);
+      ::ShowWindow(hwnd, SW_NORMAL);
+      ::SetForegroundWindow(hwnd);
+      return EXIT_FAILURE;
+    }
   }
+
 /*
  *
   else {