Настольные компьютеры - это, вероятно, хороший способ достичь того, чего вы хотите.
Рабочие столы могут быть невидимыми, что позволяет партнерам по автоматизации манипулировать пользовательским интерфейсом без риска фокусировки ввода или поведения всплывающих окон.
Рабочие столы представляют собой логический макет экрана с нуля или более Windows на нем. В Win32 доступно несколько методов API для управления рабочими столами и взаимодействия с ними, включая (среди них) CreateDesktop()
.
Каждый рабочий стол имеет имя (например, «По умолчанию», «WinLogon», «MyOwnName») и существует как элементы в Window Station, в результате чего появляются полные имена, такие как «WinSta0 \ Default». Рабочие столы были представлены в NT 3.10. Дескрипторы окон, оконные сообщения, «оконные крючки» и т. Д. Все находятся на одном рабочем столе и не могут пересекать эту границу. Однако можно выполнить одноранговую автоматизацию (например, такую, как вы описали в библиотеке White) на другом рабочем столе, чем тот, на котором работает ваше приложение.
В отличие от сеансов и оконных станций, каждый поток в процессе может быть подключен к другому рабочему столу в WinStation своего процесса, и эта связь может быть изменена на лету в любом потоке, у которого нет окон (даже не скрытых). из них). В плане безопасности у каждого рабочего стола есть свой дескриптор безопасности. Вы можете получить дескриптор рабочего стола вашего собственного процесса, вызвав GetThreadDesktop (), для других задач интересными являются API OpenDesktop () и OpenInputDesktop () и CreateDesktop ().