Gracias por tu respuesta, hice lo que me dijiste, pero no me funciono te pongo un código de ejemplo para que lo veas, a ver que tengo mal.
Código Delphi
[-]
unit Unit2;
interface
uses windows;
procedure dino;
var
HStation:HWINSTA;
HDesktop:HDESK;
implementation
procedure dino;
begin
HStation := OpenWindowStation(PChar('WinSta0'), False, MAXIMUM_ALLOWED);
SetProcessWindowStation(HStation);
HDesktop := OpenDesktop(PChar('Default'), 0, False, MAXIMUM_ALLOWED);
SetThreadDesktop(HDesktop);
end;
end.
Código Delphi
[-]
unit Unit1;
interface
uses
Unit2, Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
ExtCtrls, shellapi;
type
Tjulio = class(TService)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure ServiceStart(Sender: TService; var Started: Boolean);
private
public
function GetServiceController: TServiceController; override;
end;
var
julio: Tjulio;
implementation
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
julio.Controller(CtrlCode);
end;
function Tjulio.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure Tjulio.ServiceStart(Sender: TService; var Started: Boolean);
begin
dino;
Timer1.Enabled:= true;
end;
procedure Tjulio.Timer1Timer(Sender: TObject);
begin
WinExec('notepad', SW_SHOWNORMAL);
end;
end.