Quellcode durchsuchen

refactor(camera): 替换窗口管理实现方式

- 移除 node-window-manager 依赖
- 使用 child_process 和 PowerShell 命令替代窗口管理功能
- 实现通过 PowerShell 脚本最小化 SmartShooter 窗口
- 更新相关文件中的引用和依赖配置
panqiuyao vor 1 Tag
Ursprung
Commit
fd2088a5c2
4 geänderte Dateien mit 27 neuen und 22 gelöschten Zeilen
  1. 25 18
      electron/api/camera.js
  2. 0 1
      electron/utils/camera.js
  3. 0 1
      package.json
  4. 2 2
      public/dist/index.html

+ 25 - 18
electron/api/camera.js

@@ -2,7 +2,7 @@ const axios = require('axios');
 const http = require('http');
 const { net } = require('electron');
 const { post } = require('./request')
-const { windowManager } = require('node-window-manager');
+const { spawn, exec } = require('child_process');
 //
 const baseURL = 'http://localhost:5513/';
 // 创建 Axios 实例
@@ -134,24 +134,31 @@ module.exports = {
   },
   async minimizeSmartShooter(){
     try {
-      // 获取所有窗口
-      const windows = windowManager.getWindows();
-      
-      // 查找SmartShooter窗口
-      const smartShooterWindow = windows.find(window => {
-        const title = window.getTitle().toLowerCase();
-        return title.includes('smartshooter') || title.includes('smart shooter');
+      // 使用 PowerShell 命令最小化 SmartShooter 窗口
+      const command = `powershell -Command "Add-Type -TypeDefinition @'
+using System;
+using System.Runtime.InteropServices;
+public class Win32 {
+    [DllImport(\\"user32.dll\\")]
+    public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
+    public const int SW_MINIMIZE = 6;
+}
+'@
+Get-Process | Where-Object { $_.MainWindowTitle -like '*SmartShooter*' -or $_.MainWindowTitle -like '*Smart Shooter*' } | ForEach-Object {
+    [Win32]::ShowWindow($_.MainWindowHandle, [Win32]::SW_MINIMIZE) | Out-Null
+}"`;
+
+      return new Promise((resolve, reject) => {
+        exec(command, (error, stdout, stderr) => {
+          if (error) {
+            console.log('最小化SmartShooter失败:', error.message);
+            resolve({ success: false, message: '最小化失败: ' + error.message });
+          } else {
+            console.log('SmartShooter窗口已最小化');
+            resolve({ success: true, message: 'SmartShooter窗口已最小化' });
+          }
+        });
       });
-      
-      if (smartShooterWindow) {
-        // 最小化窗口
-        smartShooterWindow.minimize();
-        console.log('SmartShooter窗口已最小化');
-        return { success: true, message: 'SmartShooter窗口已最小化' };
-      } else {
-        console.log('未找到SmartShooter窗口');
-        return { success: false, message: '未找到SmartShooter窗口' };
-      }
     } catch (error) {
       console.error('最小化SmartShooter失败:', error);
       return { success: false, message: '最小化失败: ' + error.message };

+ 0 - 1
electron/utils/camera.js

@@ -7,7 +7,6 @@ const { spawn } = require('child_process');
 const { liveShow, liveHide, setParams, capture, getParams,CMD,captureLive,closeOtherWindow,minimizeSmartShooter } = require('../api/camera');
 
 const { dialog } = require('electron'); // 引入 electron 的 dialog 模块
-const { windowManager } = require('node-window-manager');
 const CoreWindow = require("ee-core/electron/window");
 
 

+ 0 - 1
package.json

@@ -63,7 +63,6 @@
     "ee-core": "2.12.0",
     "electron-updater": "5.3.0",
     "lodash": "4.17.21",
-    "node-window-manager": "2.2.4",
     "sharp": "^0.34.2",
     "ws": "8.18.1"
   }

+ 2 - 2
public/dist/index.html

@@ -5,8 +5,8 @@
     <link rel="icon" type="image/svg+xml" href="./vite.svg" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>智惠映AI自动拍照机</title>
-    <script type="module" crossorigin src="./assets/index-DDtVhkVu.js"></script>
-    <link rel="stylesheet" crossorigin href="./assets/index-B-bS3z-S.css">
+    <script type="module" crossorigin src="./assets/index-CP5FbtoN.js"></script>
+    <link rel="stylesheet" crossorigin href="./assets/index-B8MPi9a0.css">
   </head>
   <body>
     <div id="app"></div>