Ver Mensaje Individual
  #1  
Antiguo 11-01-2006
derteo derteo is offline
Registrado
 
Registrado: ene 2005
Posts: 5
Reputación: 0
derteo Va por buen camino
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?
Responder Con Cita