【发布时间】:2011-04-20 02:00:14
【问题描述】:
我正在尝试自动化一个应用程序,该应用程序在启动时创建一个没有用户交互的 GUI 窗口,但我不知道如何隐藏实际窗口。
我已经尝试过这样使用 ProcessStartInfo:
Process.Start(new ProcessStartInfo {
UseShellExecute = false,
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
// other properties here
});
但窗口仍然出现。
我也尝试过旋转等待窗口存在,然后将其隐藏:
while (process.MainWindowHandle == IntPtr.Zero) {}
ShowWindowAsync(process.MainWindowHandle, SW_HIDE);
不幸的是,这会使窗口闪烁大约 1/16 秒左右,如果可能的话,我想避免它。
我目前的想法是创建hook,但不确定要抓住什么钩子,也不知道它是否会起作用。
有什么建议吗?
【问题讨论】:
-
一种简单的方法(和轻微的破解;))是在不同的虚拟桌面中打开进程。然后,如果抛出 UI 就无关紧要了。不过,我不一定会宽恕这种方法:P
标签: c# winapi process pinvoke win32-process