运行 Windows 应用程序而不显示其 GUI

运行 Windows 应用程序而不显示其 GUI

有没有办法运行 Windows 应用程序而不显示其 GUI 窗口?

我有一个第三方 Windows 应用程序,它没有任何命令行参数或开关来隐藏其 GUI。我需要在后台启动它,并且仅使用该第三方应用程序发布的数据交换 API 以编程方式与其交互。

我尝试在任务计划程序中创建一个带有隐藏复选框的任务,但即使这样,当我手动启动任务时,应用程序的窗口仍然会显示出来。我猜应用程序被编程为在启动后自动聚焦。

我需要这个适用于 Windows 7 的解决方案。

谢谢。

答案1

也许您可以通过 PowerShell 使用 Win32 API 来查找并隐藏目标应用程序的窗口。

示例代码:

$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')

源代码来自Aryadev 对“使用 Powershell ISE 隐藏窗口?”的回答在 StackOverflow 上。

答案2

尝试通过 VBScript 运行您的应用程序,示例使用 wmplayer.exe(将下面一行保存为 .vbs 文件):

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

相关内容