Ein Thread kann den Desktop mittels SetThreadDesktop nur wechseln, wenn er keine Referenzen auf seinen aktuellen Desktop hält (üblicherweise Fenster-
Handle).
Insofern dürfte es schwierig werden Anwendungen auf einen anderen Desktop zu 'verschieben'.
Zitat von
MSDN:
The SetThreadDesktop function will fail if the calling thread has any windows or hooks on its current desktop (unless the hDesktop parameter is a
handle to the current desktop).