ventanas - Mover aplicaciones entre escritorios en Windows
multiples ventanas windows 10 (3)
No he implementado ningún código, solo he pensado en voz alta ... Citando del siguiente enlace de MSDN
Un proceso establece automáticamente una conexión a una estación de ventana y escritorio cuando llama por primera vez a una función USER32 o GDI32. Si el proceso no llamó a SetProcessWindowStation, se conecta a la estación de ventana heredada del proceso principal
Esto implica que la ''aplicación en ejecución'' ya tiene el valor de "miembro de lpDesktop de la estructura STARTUPINFO" establecido en la estación de ventana actual. Creo que puede necesitar cambiar este valor para enviar la aplicación a otro escritorio. Como este enlace menciona la función SetProcessWindowStation , esto podría hacerse usando
BOOL WINAPI SetProcessWindowStation (__in HWINSTA hWinSta);
Además, como menciona la función SetThreadDesktop
Asigna el escritorio especificado al hilo de llamada.
Así que supongo que para que esto funcione, la ''aplicación en ejecución'' deberá llamar a SetThreadDesktop. Sería útil si pudieras publicar en algún código ...
Estoy tratando de averiguar cómo puedo enviar una aplicación en ejecución, hacer un nuevo escritorio de Windows creado con CreateDesktop.
Puedo crear un nuevo escritorio y luego lanzar una aplicación en él, error. No puedo encontrar la manera de hacerlo con una aplicación en ejecución. Todas las funciones relacionadas con la administración de escritorio (es decir, SetThreadDesktop) siempre se aplican solo al hilo actual
¿Algún consejo?
Gracias por su respuesta.
Bueno, de hecho, lo que tengo que hacer es mover aplicaciones no desarrolladas por mí (es decir, notepad.exe)
Si observa Virtual Desktop Manager de Powertoys ( http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx ), crea varios escritorios virtuales en la misma WindowStation. Sé que hay aplicaciones similares que pueden mover las aplicaciones en ejecución (notepad.exe, calc.exe ...) de un escritorio virtual a otro, sin la necesidad de cerrarlo y volver a abrirlo (y luego pasar el nuevo identificador del escritorio [HDESK] en la llamada a CreateProcess), pero incluso después de leer toda la documentación msdn relacionada, todavía no puedo entender cómo hacerlo: |
También pensé en SetProcessWindowStation, pero hasta ahora, todos los nuevos escritorios virtuales creados con la función CreateDesktop están en la misma WindowStation, así que ...
Tal vez me perdí algo?
Los recursos de ventana (como HWND) son específicos de un escritorio. Si crea una ventana en un escritorio, no veo cómo podría moverlo a otro escritorio. Por ejemplo, los HWND utilizados por su aplicación pueden estar ya en uso en el otro escritorio.
Los administradores de escritorios virtuales no tienen que usar escritorios de Windows; pueden crear el mismo efecto manipulando las ventanas. Eche un vistazo a VirtuaWin , un administrador de escritorio virtual de código abierto.
Solo intente Vista / XP Virtual Desktop Manager desde http://vdm.codeplex.com/