Ссылка, которую вы предоставляете, описывает инструмент, основанный на встроенном механизме рабочего стола Windows.
В основном это означает, что у вас действительно разные рабочие столы (с отдельным входом в систему!), Которые не взаимодействуют - они даже не могут видеть окна друг друга, то есть, в отличие от других «утилит виртуального рабочего стола», вы не можете перемещать окно или приложение с одного рабочего стола на другой.
Это - ссылка на MSDN на использование Desktop API, которая, помимо прочего, объясняет проблемы с разрешениями и т. Д., Связанные с таким мероприятием.
Единственный способ добиться того, чего вы хотите в этой ситуации, - это создать службу Windows, которая, в свою очередь, отслеживает запуск / выключение рабочего стола.
В случае запуска рабочего стола вам нужно запустить процесс внутри этого рабочего стола.
Этот процесс должен предлагать какой-то не зависящий от рабочего стола механизм IPC, такой как TCP / IP или глобальный мьютекс + глобальная общая память или аналогичные ...
Вы общаетесь с этим процессом, и этот процесс делает все, что вам нужно (SendMessage, SendKeys ...) внутри этого рабочего стола от вашего имени.