Endereço Local do Executavél

02/10/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\


Silvio

Respostas

02/10/2004

Khundalini

Define melhor esse endereço que vc tanto fala.

[]s
Rubem Rocha
Manaus, AM


Responder Citar

02/10/2004

Quadrado

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

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


e voce faz a chamada do programa assim:

   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:

   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


Responder Citar

04/10/2004

Silvio

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


Responder Citar