Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mlferreira

Função que abre aplicativo externo e aguarda fechar

Recommended Posts

function Executa (Arquivo : String; Estado : Integer) : Integer;varPrograma : array [0..512] of char;CurDir : array [0..255] of char;WorkDir : String;StartupInfo : TStartupInfo;ProcessInfo : TProcessInformation;begin  StrPCopy (Programa, Arquivo);  GetDir (0, WorkDir);  StrPCopy (CurDir, WorkDir);  FillChar (StartupInfo, Sizeof (StartupInfo), #0);  StartupInfo.cb := sizeof (StartupInfo);  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;  StartupInfo.wShowWindow := Estado;  if not CreateProcess (nil, Programa, nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then  Result := -1  else  begin	WaitForSingleObject (ProcessInfo.hProcess, Infinite);	GetExitCodeProcess (ProcessInfo.hProcess, Result);  end;end;

 

 

Está dando o seguinte erro:

 

[Error] UnitInicial.pas(377): Types of actual and formal var parameters must be identical

informa que o erro está na linha

GetExitCodeProcess (ProcessInfo.hProcess, Result);

Alguém pode me ajudar?

Utilizando Delphi 7

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho outra função aqui, se servir..... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Inclua na seção uses: Windows

 

function ExecAndWait(const FileName, Params: string;  const WindowState: Word): boolean;var  SUInfo: TStartupInfo;  ProcInfo: TProcessInformation;  CmdLine: string;begin  { Coloca o nome do arquivo entre aspas. Isto é necessário devido aos espaços contidos em nomes longos }  CmdLine := '"' + Filename + '"' + Params;  FillChar(SUInfo, SizeOf(SUInfo), #0);  with SUInfo do begin  cb := SizeOf(SUInfo);  dwFlags := STARTF_USESHOWWINDOW;  wShowWindow := WindowState;  end;  Result := CreateProcess(nil, PChar(CmdLine), nil, nil, false,  CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,  PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);  { Aguarda até ser finalizado }  if Result then begin  WaitForSingleObject(ProcInfo.hProcess, INFINITE);  { Libera os Handles }  CloseHandle(ProcInfo.hProcess);  CloseHandle(ProcInfo.hThread);  end;end;
- Exemplo de uso:

 

ExecAndWait('c:\windows\notepad.exe', '', SW_SHOW);
Observações

Não se esqueça de informar o caminho (path) do arquivo completo. Esta função foi desenvolvida para Delphi 32 bits (2, 3, 4,...).

 

espero que lhe sirva...

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.