有没有办法运行 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