Parametros de Executaveis

Delphi

10/03/2010

Bom dia,

Como faço para passar um parametro de um progrma para outro (ambos criados por mim)

Queria fazer algo semelhante a isso:
Tenho um sistema qualquer, que acessar um banco de dados (Firebird), quero criar um outro programa para efetuar backps (criar outro exe) e fazer a chamada através do primeiro programa. Mas minha dúvida é, como posso passar o caminho do banco de dados para esse backup, sendo invisivel para o usuário? Assim, no momento que ele chamasse o sistema de backup, automaticamente recebece o caminho.

Pensei nisso para poder utilizar o mesmo sistema de backup em vários outros sistemas

Ps.: Espero ter conseguido explicar bem.
Fábio Cruz

Fábio Cruz

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

10/03/2010

var
  Parametros: string;
begin
  Parametros := ' C:\BancoDados\Banco.FDB'
  ShellExecute( 0, nil, PAnsiChar(CaminhoArquivo + Parametros), nil, nil, SW_SHOWNORMAL );
end;

Espero ter colaborado.
GOSTEI 0
Rad Informatica

Rad Informatica

10/03/2010

no seu programa de backup pegue o parametro passado via linha de comando usando a funcao paramstr(1)


ex:


procedure TfrmMain.FormCreate(Sender: TObject); VAR bdPadrao :string;
begin
  CaminhoBackup :=paramstr(1)
end;




no seu programa principal (que vai chamar o do backup)
declare essa funcao abaixo.
eu uso ela pois vc chama o executavel externo e aguarda a finalização.
nao vai deixar o cara fazer nada ate fechar o programa do backup.


em um botao vc usa


ExecAndWait('C:\SEUPROGRAMA\SEUBACKUP.EXE',' C:\BACKUP',SW_NORMAL);



O ITEM ' C:\BACKUP' e o parametro que vai ser enviado para o seu programa do backup

note o espaco o inicio!

la quando seubackup.exe abrir a variavel Caminhobackup vai receber o diretorio.


se vc quizer passar varios parametros e so ir passando separando por " "  (aspa dupla)

se o caminho do backup tiver espaco, passe com " " (aspa dupla)

la e so pegar com paramstr(1)  paramstr(2) ..... etc..

veja a funcao.

function ExecAndWait(const FileName, Params: string; const WindowState: Word): boolean;
var
  SUInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: string;
begin

  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);
  if Result then
    begin
     WaitForSingleObject(ProcInfo.hProcess, INFINITE);
     CloseHandle(ProcInfo.hProcess);
     CloseHandle(ProcInfo.hThread);
    end;
end;

GOSTEI 0
POSTAR