WinExec
09/02/2006
0
olá pessoal, meu problema é o seguinte ...
tenho um pacote de instalacao com os drivers ODBC para o firebird ...
gostaria de instala-lo em background, sem que o usuario veja o que esta acontecendo ...
para instalar uso o seguinte comando ...
minha duvida é a seguinte, como fazer com que o pacote seja instalado, e somente depois que ele for instalado o programa retome o controle e continue executando ....
[]sss
tenho um pacote de instalacao com os drivers ODBC para o firebird ...
gostaria de instala-lo em background, sem que o usuario veja o que esta acontecendo ...
para instalar uso o seguinte comando ...
WinExec(´ODBC\ODBCfire.exe /VERYSILENT /NORESTART´,SW_HIDE)
minha duvida é a seguinte, como fazer com que o pacote seja instalado, e somente depois que ele for instalado o programa retome o controle e continue executando ....
[]sss
Rafael Gomes
Curtir tópico
+ 0
Responder
Posts
10/02/2006
Rafael Gomes
como ninguem respondeu, pesquisei em outros lugares e acabei achando esse codigo aqui, um colega meu modificou algumas partes ...
para quem interessar ...
abraços!!!
para quem interessar ...
function ExecAndWait(const FileName, Params: ShortString; const WinState: Word): boolean; export; var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; CmdLine: ShortString; begin { Coloca o nome do arquivo entre aspas, devido a possibilidade de existir espaços nos nomes longos do Windows 9x } CmdLine := ´"´ + FileName + ´" ´ + Params; FillChar(StartInfo, SizeOf(StartInfo), #0); with StartInfo do begin //cb := SizeOf(SUInfo); //erro aqui cb := SizeOf(StartInfo); //essa linha está correta dwFlags := STARTF_USESHOWWINDOW; wShowWindow := WinState; end; Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo); { Aguarda o encerramento do programa executado } if Result then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); { Libera os Handles utilizados } CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end; end;
abraços!!!
Responder
Clique aqui para fazer login e interagir na Comunidade :)