Array
(
)

Endereço Local do Executavél

Silvio
   - 02 out 2004

Ai Galera tenho Varios aplicativo que chama um unico Aplicativo.
E tenho que passar como para este aplicativo o Nome do Aplicativo que está Chamando e o Endereço de onde esta o Aplicativo

Exemplo: Se o ´Aplicativo Vendas´ chama o ´APLICATIVO XXX´

Aplicativo XXX tem que saber que quem esta chamando ele agora foi o Aplicativo Vendas e ele está no Endereço: C:\Sistemas\


Khundalini
   - 02 out 2004

Define melhor esse endereço que vc tanto fala.

[]s
Rubem Rocha
Manaus, AM


Quadrado
   - 02 out 2004

Basta voce acrescentar no arquivo de projeto (.dpr) a leitura do parametro 1 de chamada, pois o zero é o nome do aplicativo atual:

#Código

cNomePrograma := ParamStr(1)
cOutrosParâmetros := ParamStr(2)


e voce faz a chamada do programa assim:

#Código
nErro := WinExec(PChar(´DirSeuPrograma\SeuPrograma.exe ´+´NomeProgramaChamador ´+
´OutrosParâmetros´), SW_SHOW);
if nErro <= 31 then { Se ocorreu erro... }
ShowMessage(´Erro ao executar o programa.´);


Eu uso e funciona bem. Inclusive passo vários parâmtros como usuário e senha para logon automático. Fazendo a checagem no arquivo dpr, a chamada indevida não mostra nem a tela:

#Código
if ParamStr(1) = ´SeuParametro´ // senha para chamar o programa
begin
Application.Initialize;
Application.CreateForm(TfmSeuForm, fmSeuForm);
Application.Run;
end
else
begin
Application.MessageBox(PChar(´Este programa deve ser chamado ´#1310+
´pelo Módulo Principal !´), ´Atenção!´,MB_OK+MB_ICONASTERISK);
Halt;
end;


Boa sorte
Quadrado


Silvio
   - 04 out 2004

Bom pessoal e mais o menos isso para ficar mais claro eu estou utilizando a Atualmente Assim:

//DtLocal Onde esta instalado o Aplicativo Local
DtLocal := FileDateToDateTime(FileAge(´C:\Sistemas\Vendas.exe´));

//Chamo o Aplicativo Controle

WinExec(´\\SERVERNET\C\SM\Sistemas\Controle\CONTROLE.exe´, SW_SHOWNORMAL);
ShowMessage(´Erro ao executar o programa.´);
Application.Terminate;

e no Meu aplicativo Controle estou fazenda da seguinte Forma:

While not (CopyFile(Pchar(\\SERVERNET\C\SM\Sistemas\Controle\CONTROLE.exe),Pchar(C:\Sistemas\Vendas.exe), False)) do
Inc(C);
//| Após copiar a versao local é executada.
WinExec(PChar(C:\Sistemas\Vendas.exe), SW_SHOWNORMAL);
Except
//| É exibida uma mensagem de erro caso algo saia errado.
Mensagem := ´Erro no Sistema! ´ + #13 + 13;
Application.MessageBox(PChar(Mensagem), ´Erro´, MB_OK+MB_ICONERROR);
Abort;
End;

então eu não posso fixar estes endereções então eu tenho que fazer com que o sistema Vendas envie para o Programa Chamado o Nome e Local que esta instalado pois tenho o mesmo Programa instalado em Computadores Diferentes que irão chamar o Programa