2

Есть ли способ запустить приложение Windows без отображения окна GUI?

У меня есть стороннее приложение для Windows, которое не имеет параметра командной строки или переключателя для подавления его GUI. Мне нужно запустить его в фоновом режиме и взаимодействовать с ним только программно, используя API для обмена данными, опубликованные этим сторонним приложением.

Я пытался создать задачу в планировщике задач с помощью флажка Скрытый, но даже тогда, когда я запускаю задачу вручную, отображается окно приложения. Я предполагаю, что приложение запрограммировано, чтобы заставить себя сосредоточиться после запуска.

Мне нужно это решение для Windows 7.

Благодарю.

2 ответа2

3

Возможно, вы могли бы использовать Win32 API через PowerShell, чтобы найти и скрыть окна для целевого приложения.

Пример кода:

$definition = @"    
      [DllImport("user32.dll")]
      static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

      [DllImport("user32.dll")]
      [return: MarshalAs(UnmanagedType.Bool)]
      static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

      public static void Show(string wClass, string wName)
      {
         IntPtr hwnd = FindWindow(wClass, wName);
         if ((int)hwnd > 0)
            ShowWindow(hwnd, 1);
      }

      public static void Hide(string wClass, string wName)
      {
         IntPtr hwnd = FindWindow(wClass, wName);
         if ((int)hwnd > 0)
            ShowWindow(hwnd, 0);
      }
"@

add-type -MemberDefinition $definition -Namespace my -Name WinApi

[my.WinApi]::Hide('Notepad', 'Untitled - Notepad')

Исходный код из ответа Арьядева «Скрыть окно с Powershell ISE?" на StackOverflow.

0

Попробуйте запустить приложение через VBScript, в примере используется wmplayer.exe (сохраните строку ниже как файл .vbs):

CreateObject("WScript.Shell").Run """C:\Program Files (x86)\Windows Media Player\wmplayer.exe""", 0 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .