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 

passar parametro para outro exe e retornar true ou false

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


Registrado: Quarta-Feira, 21 de Outubro de 2009
Mensagens: 44

MensagemEnviada: Seg Ago 22, 2011 11:18 am    Assunto: passar parametro para outro exe e retornar true ou false Responder com Citação

amigos,

vi artigos de como passar parametro par outro programa. ok. testado e aprovado.
entretanto, gostaria de ter o retorno deste parametro.
por exemplo:

1-estou "DENTRO" de um programa e chamo outro programa, atraves do shellexecute, enviando o parametro (ParamStr(1)) que é o numero 1.

2-este outro programa recebe o parametro (ParamStr(1)) e retorna true identificando numero par ou false identificando numero impar para o programa anterior.

3-o programa anterior, ou seja, que chamou o outro programa, recebe o que foi retornado, true ou false, e dá prosseguimento ao processo.

pergunta:
como fazer com que o programa que foi chamado retorne true ou false para o programa anterior?

li artigos de como enviar parametros para um programa, mas nao encontrei artigos de como receber dados processados por este programa.
isso é possível?

obrigado pela ajuda.

felipeee.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Ghost_Rider
Colaborador
Colaborador


Registrado: Segunda-Feira, 6 de Outubro de 2003
Mensagens: 4437

MensagemEnviada: Seg Ago 22, 2011 11:35 am    Assunto: Responder com Citação

Desse jeito que vc esta fazendo vc não consegue "receber" de volta o parametro, o que vc poderia fazer é criar um arquivo texto com o retorno da rotina e o exe que enviou o comando ler esse arquivo e verificar o resultado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Seg Ago 22, 2011 11:51 am    Assunto: Responder com Citação

testa isso ai:


Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
   ExitCode := 1;  // CODIGO A SER RETORNADO
   Application.Terminate;
end;


entretanto, se vc usar ShellExecute, nao vai conseguir saber o resultado. procure pela funcao ExecAndWait
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
felipeee
Novato
Novato


Registrado: Quarta-Feira, 21 de Outubro de 2009
Mensagens: 44

MensagemEnviada: Ter Ago 23, 2011 11:14 am    Assunto: Responder com Citação

fala cara!

nao conhecia esta função. bem legal!

mas nao entedi direito.

o ExitCode é para retornar o conteudo para o programa anterior, certo?

entao fiz:
1-dois programas: teste1.exe e teste2.exe;

2-o teste2.exe chama o teste1.exe passando um parametro paramstr(1) (saco);

3-em teste1.exe coloquei para exibir o parametro com showmessage(paramstr(1)) no onshow e coloquei dois botões:
botao1 retornando ExitCode:=0 e botao2 retornando ExitCode:=1;

procedure TForm1.FormShow(Sender: TObject);
begin
showmessage(paramstr(1));
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ExitCode := 0; // CODIGO A SER RETORNADO
Application.Terminate;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
ExitCode := 1; // CODIGO A SER RETORNADO
Application.Terminate;
end;


4-em teste2 fiz o abaixo:

procedure TForm1.btchamaClick(Sender: TObject);
var retorno: boolean;
begin
//- Exemplo de uso:
retorno:=ExecAndWait('c:\teste\teste1.exe', 'saco', SW_SHOW);
if retorno=false then
showmessage('false')
else
showmessage('true');
end;


resultado:
1-ele sempre retorna true.
pelo que entendi retorno so exibe false se a funcao nao conseguir executar teste1.exe.

2-o parametro nao é enviado ao teste1.exe. o showmessage sempre exibe conteudo vazio.

o que posso estar fazendo de errado?

a funcao que peguei foi:
function TForm1.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;


agradeço a ajuda.

felipeee.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Ter Ago 23, 2011 12:54 pm    Assunto: Responder com Citação

da uma olhada neste link:

http://www.delphipages.com/forum/showthread.php?t=155626
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Ter Ago 23, 2011 1:21 pm    Assunto: Responder com Citação

Para se comunicar com outra aplicação tente procurar por WM_COPYDATA que vc consegue seu objetivo.



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Ter Ago 23, 2011 4:25 pm    Assunto: Responder com Citação

vc tem q verificar o exitcode retornado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
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