如何确保Process.Start(ProcessStartInfo)启动的流程窗口具有所有Forms的焦点?
c#。如何确保Process.Start(ProcessStartInfo)启动的流程窗口具有所有Forms的焦点? 谢谢,
SetForegroundWindow
和其他设置焦点的方法有很多限制。 如果你真的想确定,启动过程将获得焦点,我建议你使用以下本机(非托管)function
SystemParametersInfo (SPI_GETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)&dwLockedTimeout, 0); SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)0, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
在进程启动和恢复之前
SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)&dwLockedTimeout, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
在末尾。 像这样的电话
WaitForInputIdle (pi.hProcess, 5000);
在程序启动之后和恢复SPI_SETFOREGROUNDLOCKTIMEOUT
之前,如果您遇到问题,也会有所帮助
Process.Start返回一个Process对象。 为了重点关注流程,首先要设置以下PInvoke:
[DllImport("user32.dll")] static extern bool SetForegroundWindow(IntPtr hWnd);
然后,使用:
上述就是C#学习教程:如何确保Process.Start(ProcessStartInfo)启动的流程窗口具有所有Forms的焦点?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
MyProcess = Process.Start(ProcessStartInfo); SetForegroundWindow(MyProcess.MainWindowHandle);
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1019873.html