FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
servicio windows que interaccione con el escritorio con usuario logueado
Estoy desarrollando un servicio de windows con Delphi. El servicio se debe iniciar con una cuenta de usuario(no con una cuenta local)y debe poder interactuar con el escritorio de la máquina en la que se está ejecutando.
Lo que hago es cambiar la estación y el escritorio del servicio por la estación winSta0 y el escritorio Default. De esta manera consigo visualizar las ventanas del proceso word que lanzo, estas ventanas se visualizan incorrectamente, seguramente no se refrescan. A continuación os pongo el código en delphi q utilizo. GetDesktopwindow(); hwinstaSave := GetProcessWindowStation(); dwThreadId := GetCurrentThreadId(); hdeskSave := GetThreadDesktop(dwThreadId); station := 'WinSta0'; desktop := 'Default'; StationWideCharPtr := Addr(station[1]); DeskWideCharPtr := Addr(desktop[1]); hwinstaUser := OpenWindowStationW(StationWideCharPtr, false,MAXIMUM_ALLOWED); SetProcessWindowStation(hwinstaUser); hdeskUser := OpenDesktopW(DeskWideCharPtr, 0, false, MAXIMUM_ALLOWED); SetThreadDesktop(hdeskUser); HERE I DO THE WORD PROCESS SetThreadDesktop(hdeskSave); SetProcessWindowStation(hwinstaSave); CloseDesktop(hdeskUser); CloseWindowStation(hwinstaUser); Alguna idea? |
#2
|
||||
|
||||
No entiendo cuál es el problema.... ¿Quieres que el servicio no precisamente se tenga que crear con el usuario local?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
Uno de los requisitos del servicio es que debe funcionar con una cuenta de usuario, no con la cuenta local. Si funciona con la cuenta local, marcando el chekbox de interacción con el escritorio, la interacción se haría correctamente.
El servicio debe crear un proceso Word, aqui surge el problema(no se visualizan correctamente las ventanas de word). Con el código que puse en el mensaje anterior consigo que se visualicen las ventanas pero lo hacen de una forma incorrecta. He comprobado que si : - se creo manualmente un proceso word - ejecuto el servicio entonces las ventanas de word usadas por el servicio se muestran correctamente. La única diferencia que detecté entre las ventanas abiertas usando el servicio y las que abro manualmante es la siguiente: - las clases de las ventanas word son diferentes o eso creo. Las ventanas que se crean manualmente, lo hacen con la clase OpusApp OpusApp = Es el nombre de la class Windows de todos los MS-Word http://www.lawebdelprogramador.com/n...n8=0&n9=0&n0=0 En cambio las ventanas que crea el servicio son GHost. Qué indicará GHOSt? Estoy usando delphi 7 y word 2003. |
#4
|
||||
|
||||
Ahora si...
¿Probaste jugar con el parámetro dwDesiredAccess de OpenDesktop?.. Lo estas pasando en 0, y aparentemente no tendrías acceso a crear ventanas (el proceso local no los creados). ¿Cómo creas el proceso de Word?.. no lo crearás como inherited?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
EL proceso word lo creé de dos formas, obteniendo el mismo reusltado:
1. word := TWordApplication.Create(self); word.AutoConnect := False; //más adelante realizo la conexion word.AutoQuit := False; //al final salimos con la instruccion QUIT word.ConnectKind := ckRunningOrNew; word.Connect; word.WindowState := wdWindowStateNormal; word.Visible := true; .... .... 2. try try G_objWord := GetActiveOleObject('Word.Application'); except on e:exception do begin Log_GrabarLog('WARNING: No existe un proceso Word abierto :' + e.Message); G_objWord := CreateOleObject('Word.Application'); Log_GrabarLog('INFO: Se ha creado un proceso Word'); end; end; //lo muestra G_objWord.Visible := True; //lo minimiza. G_objWord.WindowState := 2; comprobé los permisos con opendesktop y sigue igual. Seguiré probando. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Dudas con HDESK | bustio | Varios | 14 | 22-10-2005 06:35:03 |
Capturar pantalla desde un servicio del windows | walrus | API de Windows | 4 | 17-08-2005 17:59:14 |
Cambiar iconos del escritorio de Windows | tiel | API de Windows | 8 | 03-07-2005 21:10:56 |
Carga de servicio en logueo de usuario | marceloalegre | Varios | 4 | 16-05-2005 16:02:56 |
Microsoft Taglines | SnaKe | Humor | 0 | 03-06-2003 15:42:27 |
|