Подавить пользовательский интерфейс приложений в Windows - PullRequest
2 голосов
/ 14 января 2012

У нас есть механизм сценариев (работающий под Windows), который запускает другое приложение несколько тысяч раз по мере нашей работы. Это другое приложение имеет загруженный пользовательский интерфейс (появляется главное окно, мигает несколько диалогов, работает ли оно, а затем закрывается). В идеале мы хотели бы полностью отключить пользовательский интерфейс дочернего приложения, чтобы пользователь мог продолжить работу на рабочей станции.

Мы не имеем никакого контроля над кодом другого приложения, поэтому мы должны быть в состоянии достичь этого результата с помощью нашего внешнего процесса. Мы запускаем другой процесс, поэтому наше приложение является владельцем нового процесса, если это поможет.

Принудительное сворачивание главного окна приложения путем отправки оконного сообщения после запуска не является хорошей стратегией, потому что мы запускаем приложение несколько тысяч раз в течение нашего запуска (мы могли бы свести к минимуму главное окно каждый раз, но опыт для пользователя, я думаю, все еще заканчивался бы с изменением фокуса и прерыванием остальной части их работы). Кроме того, рассматриваемое приложение, кажется, намеренно вызывает SW_SHOW, поэтому, даже если мы свернем приложение, оно вернется.

У кого-нибудь есть творческие или умные подходы к этому? Может быть, какой-то способ перенести пользовательский интерфейс приложения на другой рабочий стол, который не помешает обычной работе пользователя? (Проблема в том, что, я уверен, Windows не поддерживает виртуальные рабочие столы ...).

Обратите внимание, что я в порядке с полным подавлением пользовательского интерфейса дочернего приложения.

1 Ответ

2 голосов
/ 14 января 2012

Windows фактически поддерживает виртуальные рабочие столы . Ваше предлагаемое решение должно работать прекрасно.

Создайте новый рабочий стол с CreateDesktop, но не переключайтесь на него (очевидно). Затем при создании процесса укажите этот рабочий стол в структуре STARTUPINFO, которую вы передаете CreateProcess.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...