我在用
System.Diagnostics.Process.Start(ProcessInfo);
从我的 Windows 窗体应用程序中在记事本中打开文本文件。
详细代码片段是
ProcessStartInfo PSI = new ProcessStartInfo("notepad.exe", LogFile);
PSI.WindowStyle = ProcessWindowStyle.Normal;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(PSI);
但是,它会在默认桌面上打开记事本,但不会在运行主应用程序的扩展桌面上打开记事本。
现在的问题是,如何在活动桌面(即当前应用程序运行的窗口)上打开记事本?
除了指定初始窗口状态(正常、隐藏等)之外,您基本上无法控制新启动的应用程序如何启动以及在哪里显示自己。
这里最好的选择是启动应用程序,然后使用其窗口句柄告诉它移动。这都需要使用P/Invoke,来调用MoveWindow。所有这些函数的 C# 签名均已启用pinvoke.net.
这里有一个非常简单 (VB.NET) 示例这显示了基本思想。在这种情况下,正如 @Lloyd 指出的那样,您需要的窗口句柄是Process.MainWindowHandle
你从Process.Start
。注意Process.MainWindowHandle
没有立即填写;你通常需要打电话WaitForInputIdle
以确保窗口确实被创建。如果MainWindowHandle
是 0 那么你就会知道还为时过早。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)