 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
naviocabral Novato

Registrado: Sexta-Feira, 2 de Junho de 2006 Mensagens: 24
|
Enviada: Qui Ago 15, 2013 9:38 pm Assunto: Passar dados de um executavel para outro |
|
|
Pessoal !!! Utilizo o delphi 7, com firebird 2.5. Criei um sistema com muitos módulos. Agora estou precisando passar 2 campos de informações de um executavel para outro. O módulo principal após iniciado, chamará os outros módulos a execução destes outros necessita de uma informação que venha do principal. Hoje eu chamo os módulos pelo Winexec, utilizando da seguinte forma:
Após chamar o módulo executo
begin
WinExec('\ISPSSist\ContasPagar.exe',SW_NORMAL);
end;
Pergunto como faço para um campo por exemplo: código do usuário nominado:
usuario : Integer;
Obrigado |
|
| Voltar ao Topo |
|
 |
jguto Novato

Registrado: Segunda-Feira, 19 de Março de 2012 Mensagens: 88 Localização: Avaré, SP
|
Enviada: Sex Ago 16, 2013 9:40 am Assunto: |
|
|
olá, eu utilizo o procedimento a seguir pra chamar um novo aplicativo passando parametros
| Código: |
//Adicione ShellApi aos uses
procedure ShellExecute_AndWait(FileName: string; Params: string);
var
exInfo: TShellExecuteInfo;
Ph: DWORD;
begin
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
ExInfo.lpVerb := 'open';
ExInfo.lpParameters := PChar(Params);
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) then
Ph := exInfo.HProcess
else
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
end;
|
Onde
| Citação: | FileName := Caminho completo do exe a ser chamado;
Params := Lista de Parametros a serem passados - Aqui voce deverá passar os paramentros como string e separando um do outro com espaços. Ex: 'CodUsuario NomeUsuario';
|
Na aplicação a ser chamada, voce consegue recuperar estes valores atraves da Função ParamStr.
Ex:
| Citação: | ParamStr(0) = Retornará o caminho completo do aplicativo
ParamStr(1) = Retornará o primeiro campo que vc passou na chamada( CodUsuario)
ParamStr(2) = Retornará o segundo campo que vc passou na chamada( NomeUsuario) |
Exemplo da Chamada
| Código: | | ShellExecute_AndWait('C:\Users\Adm\Desktop\Teste\Project2.exe','01 Usuario'); |
Exemplo no aplicativo Chamado
| Citação: | ShowMessage(ParamStr(0) + ' - '+ ParamStr(1) + ' - ' + ParamStr(2) );
Saida = C:\Users\Adm\Desktop\Teste\Project2.exe - 01 - Usuario |
espero ter ajudado.. |
|
| Voltar ao Topo |
|
 |
naviocabral Novato

Registrado: Sexta-Feira, 2 de Junho de 2006 Mensagens: 24
|
Enviada: Sex Ago 16, 2013 8:43 pm Assunto: |
|
|
| jguto escreveu: | olá, eu utilizo o procedimento a seguir pra chamar um novo aplicativo passando parametros
| Código: |
//Adicione ShellApi aos uses
procedure ShellExecute_AndWait(FileName: string; Params: string);
var
exInfo: TShellExecuteInfo;
Ph: DWORD;
begin
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
ExInfo.lpVerb := 'open';
ExInfo.lpParameters := PChar(Params);
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) then
Ph := exInfo.HProcess
else
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
end;
|
Onde
| Citação: | FileName := Caminho completo do exe a ser chamado;
Params := Lista de Parametros a serem passados - Aqui voce deverá passar os paramentros como string e separando um do outro com espaços. Ex: 'CodUsuario NomeUsuario';
|
Na aplicação a ser chamada, voce consegue recuperar estes valores atraves da Função ParamStr.
Ex:
| Citação: | ParamStr(0) = Retornará o caminho completo do aplicativo
ParamStr(1) = Retornará o primeiro campo que vc passou na chamada( CodUsuario)
ParamStr(2) = Retornará o segundo campo que vc passou na chamada( NomeUsuario) |
Exemplo da Chamada
| Código: | | ShellExecute_AndWait('C:\Users\Adm\Desktop\Teste\Project2.exe','01 Usuario'); |
Exemplo no aplicativo Chamado
| Citação: | ShowMessage(ParamStr(0) + ' - '+ ParamStr(1) + ' - ' + ParamStr(2) );
Saida = C:\Users\Adm\Desktop\Teste\Project2.exe - 01 - Usuario |
espero ter ajudado.. |
Cara, eu acho que essa rotina que voce montou é muito avançada para meus conhecimentos. Eu não tenho tanto conhecimento assim. Você poderia se fosse possível, me passar algo utilizando destes comando que te dei ? Obviamente que se não existe como vou tentar entender o que voce passou. Obrigado. |
|
| Voltar ao Topo |
|
 |
jguto Novato

Registrado: Segunda-Feira, 19 de Março de 2012 Mensagens: 88 Localização: Avaré, SP
|
Enviada: Seg Ago 19, 2013 8:55 am Assunto: |
|
|
cara, não tem muito segredo aqui não, primeiro vc vai colocar a seguinte procedure no teu sistema
| Código: | //Adicione ShellApi aos uses
procedure ShellExecute_AndWait(FileName: string; Params: string);
var
exInfo: TShellExecuteInfo;
Ph: DWORD;
begin
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
ExInfo.lpVerb := 'open';
ExInfo.lpParameters := PChar(Params);
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) then
Ph := exInfo.HProcess
else
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
end; |
depois vc só vai trocar a chamada de
| Código: | | WinExec('\ISPSSist\ContasPagar.exe',SW_NORMAL); |
por
| Código: | | ShellExecute_AndWait('\ISPSSist\ContasPagar.exe','Informação1, Informacão2, ..'); |
|
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|