ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

ServiceApplication + ShellExecute

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Brunog3
Aprendiz
Aprendiz


Registrado: Domingo, 16 de Dezembro de 2007
Mensagens: 206

MensagemEnviada: Ter Out 19, 2010 4:38 pm    Assunto: ServiceApplication + ShellExecute Responder com Citação

Boa tarde pessoal.

Estive tentado executar uma aplicação de dentro de um serviço, porém ela não abre corretamente e não consegui identificar o que acontece.
O formulário da aplicação não é mostrado e nem aparece ela na barra de tarefas.
Esse teste eu fiz com uma aplicação sem nada, somente um formulário mesmo, e com a calculadora do windows.

Chamando por outro tipo de aplicação, abre normalmente.

Alguém tem alguma idéia...
Vou postar as rotinas que tentei utilizar:


Código:
procedure exec(sFile: string);
var
   SEInfo        : TShellExecuteInfo;
   ExecuteFile   : string;
begin
  ExecuteFile    := sFile;
   try
        FillChar(SEInfo, SizeOf(SEInfo), 0);
        SEInfo.cbSize  := SizeOf(TShellExecuteInfo);
        with SEInfo do
        begin
          fMask        := SEE_MASK_NOCLOSEPROCESS;
          Wnd          := 0;
          lpFile       := PChar(ExecuteFile);
          lpParameters := nil;
          lpDirectory  := pchar(ExtractFilePath(sfile));
          nShow        := SW_SHOWNORMAL;
        end;
        ShellExecuteEx(@SEInfo);
      except
        on e: exception do
           ShowMessage('Erro ao abrir arquivo. ' + e.Message);
      end;
end;

  function CreateProcessSimple(cmd: string): boolean;
  var
    SUInfo: TStartupInfo;
    ProcInfo: TProcessInformation;
  begin
     FillChar(SUInfo, SizeOf(SUInfo), #0);
     SUInfo.cb      := SizeOf(SUInfo);
     SUInfo.dwFlags := STARTF_USESHOWWINDOW;
     SUInfo.wShowWindow := SW_HIDE;

     Result := CreateProcess(nil,
                          PChar(cmd),
                          nil,
                          nil,
                          false,
                          CREATE_NEW_CONSOLE or
                          NORMAL_PRIORITY_CLASS,
                          nil,
                          nil,
                          SUInfo,
                          ProcInfo);

     if (Result) then
     begin
//        WaitForSingleObject(ProcInfo.hProcess, INFINITE);

        CloseHandle(ProcInfo.hProcess);
        CloseHandle(ProcInfo.hThread);
     end;
  end;


ShellExecute(0, 'open', pChar('c:\windows\calc.exe'), nil, nil, SW_SHOW)
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB