Как CreateProcessAsUser и сделать его окном переднего плана? - PullRequest
2 голосов
/ 22 февраля 2011

Я пытаюсь запустить пользовательский интерфейс, используя CreateProcessAsUser, но окно не является окном переднего плана.

Я бы не возражал, если бы это было обычное окно, но это окно вызывает приглашение UAC, и оно также не отображается на переднем плане.

1 Ответ

2 голосов
/ 22 февраля 2011

Из вашего описания это звучит так, как будто вы пытаетесь запустить другой процесс в режиме с повышенными правами. Если это то, что вы пытаетесь сделать, вы не можете установить его в окно переднего плана. На самом деле, неприподнятые процессы не могут касаться возвышенных процессов каким-либо образом / формой / формой.

Созданный процесс должен отвечать за то, чтобы на самом деле сделать свое собственное окно приоритетным. Попробуйте поиграть со структурой STARTUPINFO, которую вы передаете CreateProcessAsUser, установив флаг STARTF_USESHOWWINDOW и указав значение SW_SHOWNORMAL. Если это не сработает, нет другого обходного пути, кроме как сначала поднять свою часть, например, создать компонент COM с повышенными правами.

Если это не то, что вы пытаетесь сделать, и вы просто хотите переместить окно дочернего процесса на передний план, тогда вам нужно перечислить окна, принадлежащие дочернему процессу , а затем вызвать SetForegroundWindow на одном из них.

...