PDA

Ver la Versión Completa : no funciona ShellExecute en un servicio delphi


ingabraham
10-12-2015, 01:15:53
buenas,

tengo un proyecto de un servicio el cual hago seguimiento por un log,

pero el ShellExecute no me funciona, he buscado otras funciones. en aplicaciones estandar de delphi si me funcionan, pero al pasarla al servicio no.

alguien me puede ayudar con una solucion , para que mi servicio abra otros programas.


ShellExecute(0, 'open', PChar( 'D:\NEW\miprograma.exe' ) , nil, nil, SW_SHOW);


gracias,

escafandra
10-12-2015, 17:23:08
El problema no es que no funcione, sino que no verás el interface gráfico en el escritorio activo. Así funcionan los servicios desde Vista. Aquí tienes la solución: Lanzar una aplicación GUI desde un servicio (delphiaccess.com/foros/index.php/topic/8221-multilenguaje-lanzar-una-aplicación-gui-desde-un-servicio/?hl=servicio)

Saludos.

ingabraham
10-12-2015, 17:24:16
exacto, ya lo descubrí. en servicios del sistema esta pero no me lo muestra visualmente.

ingabraham
10-12-2015, 17:53:49
no me funciona en el servicio estas funciones.

compañero de casualidad no tienes algún proyecto de prueba, te lo agradecería mucho

function WTSEnumerateSessionsA(hServer: THandle; Reserved, Version: DWORD; ppSI: PPWTS_SESSION_INFO; pCount: PDWORD): boolean; stdcall external 'Wtsapi32.dll';
function WTSQueryUserToken(SessionId: DWORD; phToken: PHANDLE): boolean; stdcall external 'Wtsapi32.dll';
function WTSFreeMemory(pSi: Pointer): boolean; stdcall external 'Wtsapi32.dll';

escafandra
10-12-2015, 19:10:50
En el enlace que te pasé tienes una App de ejemplo llamada RunAsCurrentUser. Dicha App lanza el notepad.exe. Para ver fu funcionamiento debes ejecutarla en el usuario SYSTEM, como lo hace un servicio. Para ello, facilito una app ya compilada llamada Minisystem ( http://delphiaccess.com/foros/index.php/topic/4914-minisystem-una-miniaplicación-para-ejecutar-programas-con-privilegios-system/?hl=minisystem). Esta App consigue su tarea lanzando un servicio y éste, ejecuta la app que queremos que sea system.

Una aclaración: El código se compiló con delphi7 y no usaba UNICODE. Para usar unicode se deben importar las versiones "W" de las APIS.

Saludos.

escafandra
10-12-2015, 19:16:24
En los mensajes que te enlazo hay algún link roto que he arreglado. No puedo subir un proyecto porque no estoy en casa. Desde el SmartPhone me es imposible, pero creo que con las aclaraciones de mi mensaje anterior, puedes solucionarlo.

Saludos.