Pq o comp. JEDI, 1 Instancia do Aplic, não funciona aki ?

29/06/2008

2

Olá!

Inseri um comp. do JEDI, uma instancia do aplicativo no meu Menu principal, fiz o teste e funcionou tudo ok.
Pois pecebi q o programa p/ verifiar, carrega o programa até o menu, p/ ser detectado, então resolvi coloca-lo no .dpr.
Ao criar e inseri o mesmo no .dpr, não funcionou.
Veja a rotinas:

A quem puder ajudar, desde já meus agradecimentos.
---------------------
//Arquivo .DPR...
....
Var Frm_inicio : TFrm_inicio;
JvAppInstances1: TJvAppInstances;

begin
//---------------------------------//
Application.Initialize;
//---------------------------------//
JvAppInstances1:= TJvAppInstances.Create(application);;
JvAppInstances1.Active := true;
JvAppInstances1.MaxInstances := 1;
JvAppInstances1.SendCmdLine := true;
JvAppInstances1.AutoActivate := true;

Application.Title := ´Acê_Informatica´;

Frm_inicio := TFrm_inicio.Create(application);
Frm_inicio.Show;
Frm_inicio.Refresh;
...
Application.CreateForm(TDMCN, DMCN);
Application.CreateForm(TFrm_Menu, Frm_Menu);
....
FreeAndNil(Frm_inicio);
Application.Run;
---------------------

100+

ANT.CARLOS/SP


Responder

Posts

30/06/2008

Onjahyr

Cara... Use MUTEX, é bem mais simples e direto. Componentes é só para qdo não existir opções ou quiser fazer mais rápido sem pesquisar....

[b:cd6cb756ae]Exemplo:[/b:cd6cb756ae]

program Exemplo;

uses
  Windows,

{$R *.res}

var
  Mutex  : THandle;

begin
// Pode colocar caracteres, simbolos, numeros, etc...
  Mutex := CreateMutex(nil, True, ´12A,B-FD..Py5/4´);
  if Mutex <> 0 then //Encontrou sua aplicação
    begin
      if GetLastError = ERROR_ALREADY_EXISTS then
        begin
          CloseHandle(Mutex); // Fecha Handle
          Halt; // Fecha a segunda aplicação

          Exit; // Sai
        end;
    end;

  Application.Initialize;
  Application.Title := ´Título da minha aplicação´;
  Application.CreateForm(Tfrm_Principal, frm_Principal);
  Application.Run;
end.



Simples assim.... Aonde tem: [b:cd6cb756ae]12A,B-FD..Py5/4[/b:cd6cb756ae]
Pode renomear para qualquer coisa, nome, número, simbolo.... é o identificador que ficará na memória, se for executar mais de uma vez ele vê que este Mutex já existe e não permitirá executar a aplicação.

Obs.: Não é tirando o mérito dos componentes da JEDI não, alias, são os melhores componentes que existe para Delphi. Eu mesmo uso eles!

Blz.


Responder