2010-06-29 2 views
0

Есть случаи, когда нужно запустить процесс, основанный на некоторых событиях, не связанных с деятельностью мыши клавиатуры (с аппаратного или временного). Он работает с ShellExecute и ShellExecuteEx в целом, но если есть полноэкранное приложение (одно, созданное без полей с точно такими же размерами экрана), это запущенное приложение не становится активным или даже видимым. Есть ли способ принести такое приложение поверх этого полноэкранного приложения? Я знаю о ShellExecuteEx и hProcess-манипуляции, но, похоже, он включает в себя очень недавний api (GetProcessId) и кажется, что эта функция имеет некоторые ограничения, связанные с правами пользователя.Как преодолеть полноэкранное приложение, если я хочу показать свое приложение

Благодаря

+0

Вы пробовали установку «всегда сверху»? –

+1

Кража фокуса - огромная пища для большинства пользователей. Я бы серьезно размышлял над тем, является ли это хорошей идеей. Просто подумайте обо всех геймерах, которых вы будете раздражать. – Cogwheel

ответ

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?.

Пожалуйста, сделайте это только у вас действительно необходимо начать процесс сверху.

Смежные вопросы