有些情况需要根据一些不涉及键盘鼠标活动的事件(来自硬件或基于时间)启动进程。它通常与ShellExecute和ShellExecuteEx一起使用,但是如果有一个全屏应用程序(一个与屏幕尺寸完全无边框创建的应用程序),则此启动的应用程序不会变为活动状态甚至不可见。有没有一种技术可以将这样的应用程序带到这个全屏应用程序的顶部?我知道ShellExecuteEx和hProcess操作,但它似乎涉及非常近期的api(GetProcessId),似乎这个函数有一些与用户权限相关的限制。
由于
答案 0 :(得分:1)
您可以使用
SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)0,
SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
在流程开始之前执行此操作,但您应该像How to ensure process window launched by Process.Start(ProcessStartInfo) has focus of all Forms?中所述暂时执行此操作。
请仅在真正需要开始流程的情况下执行此操作。