Opa Eric,
  é não...

     Se eu jogar o parãmetro junto do cmd ele entende tudo como um comando
só. e diz que o comando não Existe.

  O pior é que se eu acertar este lance do parametro, fica 10.... Ou seja...
aih eu zero os meus problemas... :)



Em 22/01/07, Eric D. <[EMAIL PROTECTED]> escreveu:
>
>   Se eu não estiver errado, o parâmetro "Cmd" da função deve ser o seu
> comando completo, com parâmetros e tudo mais....
>
> []'s
>
> Eric D. - Desenvolvimento e Soluções de Tecnologia
> [EMAIL PROTECTED] <ericdesenv%40yahoo.com.br>
> "Talk is cheap, show me the code..."
> ----- Original Message -----
> From: Marcos André
> To: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>
> Sent: Monday, January 22, 2007 1:28 PM
> Subject: RES: [delphi-br] Interagir com o console
>
> Olá João,
>
> Isto é exatamente o que eu precisa, só que não consegui
> enviar parâmetros: ex:
>
> C:\reparar.bat renal.gdb
>
> É desta forma q eu executo no prompt, porém não consigo enviar o renal.gdb
> pela procedure, tow pesquisando, mas num tow encontrando como fazer...
>
> Tem uma idéia?
>
> Um Abraço
>
> __ __
> / \ /| |'-.
> .\__/ || | |
> _ / `._ \|_|_.-'
> | / \__.`=._) (_ Marcos André
> |/ ._/ |"""""""""|
> |'. `\ | | Analista de Sistema
> ;"""/ / | | Easy Corporation
> ) /_/| |.-------.| www.e-easy.com.br <http://www.e-easy.com.br/>
> ' `-` ' " " msn: [EMAIL PROTECTED] <mralcatraz%40hotmail.com>
>
> Planos profissionais com qualidade.
> consulte nossos planos, click aqui <http://www.e-easy.com.br/websites.php>
>
>
> De: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br> [mailto:
> delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>] Em
> nome de Joao Morais
> Enviada em: segunda-feira, 22 de janeiro de 2007 11:03
> Para: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>
> Assunto: Re: [delphi-br] Interagir com o console
>
> Marcos Douglas wrote:
>
> > Comece com a função ShellExecuteEx da unit ShellAPI.pas
> >
> > --
> > Marcos Douglas
> >
> > From: Marcos André <[EMAIL PROTECTED] <marcos%40e-easy.com.br><mailto:
> marcos% <marcos%25>40e-easy.com.br> >
> >
> >> Olá Pessoal,
> >>
> >>
> >> Tenho uma BAT que executa alguns arquivos do Firebird para
> >> recuperação de bases, GBAK, GFIX, etc... Gostaria de fazer um programa
> que
> >> lidasse com estes arquivos, tipo enviasse comandos para o prompt e leia
> a
> >> resposta... alguém poderia me ajudar com um ponto de partida???
>
> E continue com essa aqui:
> (código retirado do Dev-Pascal)
>
> Cuidado com as quebras de linha.
>
> function ExecuteProcLog(Cmd, WorkDir: String): string;
> var
> tsi: TStartupInfo;
> tpi: TProcessInformation;
> nRead: DWORD;
> aBuf: array[0..101] of Char;
> sa: TSecurityAttributes;
> hOutputReadTmp, hOutputRead, hOutputWrite, hInputWriteTmp, hInputRead,
> hInputWrite, hErrorWrite: THandle;
> FOutput: string;
> begin
> FOutput := '';
>
> sa.nLength := SizeOf(TSecurityAttributes);
> sa.lpSecurityDescriptor := nil;
> sa.bInheritHandle := True;
>
> CreatePipe(hOutputReadTmp, hOutputWrite, @sa, 0);
> DuplicateHandle(GetCurrentProcess(), hOutputWrite, GetCurrentProcess(),
> @hErrorWrite, 0, true, DUPLICATE_SAME_ACCESS);
> CreatePipe(hInputRead, hInputWriteTmp, @sa, 0);
>
> // Create new output read handle and the input write handle. Set
> // the inheritance properties to FALSE. Otherwise, the child inherits
> // the these handles; resulting in non-closeable handles to the pipes
> // being created.
> DuplicateHandle(GetCurrentProcess(), hOutputReadTmp,
> GetCurrentProcess(),
> @hOutputRead, 0, false, DUPLICATE_SAME_ACCESS);
> DuplicateHandle(GetCurrentProcess(), hInputWriteTmp,
> GetCurrentProcess(),
> @hInputWrite, 0, false, DUPLICATE_SAME_ACCESS);
> CloseHandle(hOutputReadTmp);
> CloseHandle(hInputWriteTmp);
>
> FillChar(tsi, SizeOf(TStartupInfo), 0);
> tsi.cb := SizeOf(TStartupInfo);
> tsi.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
> tsi.hStdInput := hInputRead;
> tsi.hStdOutput := hOutputWrite;
> tsi.hStdError := hErrorWrite;
>
> CreateProcess(nil, PChar(Cmd), @sa, @sa, true, 0, nil, PChar(WorkDir),
> tsi, tpi);
> CloseHandle(hOutputWrite);
> CloseHandle(hInputRead );
> CloseHandle(hErrorWrite);
> Application.ProcessMessages;
>
> repeat
> if (not ReadFile(hOutputRead, aBuf, 16, nRead, nil)) or (nRead =
> 0) then
> begin
> if GetLastError = ERROR_BROKEN_PIPE then Break
> else MessageDlg('Pipe read error, could not execute file',
> mtError, [mbOK]);
> end;
> aBuf[nRead] := #0;
> FOutput := FOutput + PChar(@aBuf[0]);
> Application.ProcessMessages;
> until False;
>
> Result := FOutput;
> // GetExitCodeProcess(tpi.hProcess, nRead) = True;
> end;
>
> --
> Joao Morais
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>



-- 
Um abraço

Marcos André


[As partes desta mensagem que não continham texto foram removidas]

Responder a