terça-feira, 23 de junho de 2009

Fazendo um Serviço rodar no modo Aplicativo

Muitas vezes gostaríamos que o nosso serviço rodasse como um aplicativo comum, sendo que isso facilitaria bastante o debug.

Por aqui fiz o código abaixo (no arquivo DPR), que atendeu bem as minhas necessidades:

var
sModo : string;
begin
  GetParamByKey('modo',sModo,'desktop');
  if (AnsiLowerCase(sModo) = 'desktop') then
  begin
    Forms.Application.Initialize;
    Forms.Application.MainFormOnTaskbar := True;
    Forms.Application.Title := 'G!Guadian Master';
    Forms.Application.CreateForm(TfModoDesktop, fModoDesktop);
    Forms.Application.Run;
  end else
  begin
    if not SvcMgr.Application.DelayInitialize or SvcMgr.Application.Installing then
      SvcMgr.Application.Initialize;
    SvcMgr.Application.CreateForm(TGGuadianMaster, GGuadianMaster);
    SvcMgr.Application.Run;
  end;
end.

5 comentários:

O Engenheiro disse...

Olá José Mário,

De onde surgiu a função GetParamByKey()? Foi você quem criou?

[]'s

José Mário Silva Guedes disse...

Olá, sim - fui eu que criei mesmo. Infelizmente não tenho mais o código. Mas é simples de implementar.

O Engenheiro disse...

Sem problema. Só por curiosidade. Uso o FindCmdLineSwitch do System.SysUtils.

[]'s

Mabreu disse...

José Mário Silva Guedes ,

Tem como fazer um aplicativo que ja tá feito no delphi virar um serviço? ou tem que se refazer tudo do zero?

José Mário Silva Guedes disse...

Opa! Depende muito de como o programa esta atualmente arquitetado. Na maioria das vezes (em não havendo GUI) é fácil de implementar.

Minha lista de blogs