![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#2
|
||||
|
||||
|
Partiendo de las 2 aplicaciones hechas por roman, he dado mis primeros pasos con HDesk.
En MainApp, justo donde crea el proceso lockApp, añade esta linea: Con esto tienes lo que querías, el concepto global sería: - Ejecutas MainApp en el escritorio principal (el de windows de siempre). - en el FormCreate, se crea el escritorio virtual. - al pulsar el boton LockDesktop, MainApp se queda en el escritorio principal, mientras crea 2 procesos más.
Pero en el escritorio principal, también está MainApp, solo que no puedes verlo .Si has seguido mis pasos hasta ahora, te encontrarás en el escritorio virtual con 2 aplicaciones, MainApp y LockApp, para salir correctamente: primero tienes que pulsar Exit en MainApp (para que se cierre ese programa), y despues pulsas OK en el LockApp. ¿Por qué? Supon o mejor sigue estos pasos... verás que bonito ![]() - Ejecutas MainApp en el escritorio principal (el de windows de siempre). - en el FormCreate, se crea el escritorio virtual. - al pulsar el botonLockDesktop, MainApp se queda en el escritorio principal, mientras crea 2 procesos más.
- Ahora pulsas en OK en el LockApp. - Sales del escritorio virtual y vuelves al principal. - Estas en el principal, con el MainApp, ahora pulsa de nuevo LockDesktop. - Cambias al escritorio virtual y encontrarás:
Si has entendido todas mis divagaciones , pensarás.... Bueno, y ¿por qué crear un MainApp con createProcess? ¿no podría simplemente cambiar el MainApp al escritorio virtual?, pues a primera vista no. He visto que existe la rutina SetThreadDesktop, que permite cambiar a un proceso de escritorio, pero si ese proceso tiene alguna ventana o algún Hook, no es posible moverlo de escritorio, y claro, nuestro programa MainApp tiene una ventana .Se podrá hacer, ya que los controladores de Nvidia, permite crear escritorios virtuales y mover las aplicaciones (ventanas) de un escritorio a otro, por tanto, seguro que puede engañarse a windows para hacer lo que queramos, aunque no me preguntes como ![]() El tema que inicialmente planteabas, quedaría resulto con añadir esa linea que digo, pero no puedo saber cuan complejo es tu programa. Lo que sí veo es que CreateProcess tiene un parámetro "CommandLine", por tanto, puedes preparar una linea de comandos en tu MainApp. Al crearlo con CreateProcess le envias un parámetro para que ella misma sepa que se está ejecutando en otro escritorio virtual, y por ejemplo, no permita cambiar de escritorio sin antes cerrarse. Buff que lio, ni yo mismo me entiendo, ¿será la resaca de anoche? ![]()
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
|