Fórum Aplicação não abrir duas vezes #131239

28/03/2010

0

Colegas,   Preciso fazer com que minha aplicação não abra duas vezes, caso o usuário por engano tente abri novamente... Gostaria que o form principal maximizasse mediante a tentativa de abrir novamente...     Aguardo     Um abraço   Irenildo Carvalho
Irenildo Carvalho

Irenildo Carvalho

Responder

Posts

29/03/2010

Wesley Yamazack

Olá amigo, implemente o código abaixo no DPR de sua aplicação. para isso vá ao menu Projetct / View Source .

Provavelmente ele estará mais ou menos da sgeuinte forma.


program xptp;

uses
  Forms,
  Unit1 in 'Unit1.pas' ;

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Altere o mesmo para que fique

program xptp;

uses
  Forms,
  Unit1 in 'Unit1.pas', Windows, Dialogs ;

{$R *.res}

var
  Hwnd: Thandle;
begin
  Hwnd := FindWindow ('TForm1', 'Form1');
  if Hwnd = 0 then
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end
  else
  begin
    MessageDlg ('Já existe uma instãncia deste programa, verifique por favor!!',mtinformation,[mbok], 0);
    SetForegroundWindow (Hwnd);
  end;
end.



Faça as alterações e veja o resultado.

Um abraço

Wesley Y
Responder

Gostei + 0

30/03/2010

Wesley Yamazack

Olá amigo, consegui implementar o exemplo que lhe passei ?  Existe mais alguma dúvida ? Estamos aguardando para fecharmos o chamado.
 
Um abraço

Wesley
Responder

Gostei + 0

30/03/2010

Irenildo Carvalho

Ei,     Desculpa a demora, precisei me ausentar...   Olha só implementei como vc me passou, mas deum erro, segue abaixo     [Error] SysErp.dpr(150): Incompatible types: 'Class reference' and 'PAnsiChar'       aguardo   um abraço     Irenildo
Responder

Gostei + 0

30/03/2010

Irenildo Carvalho

Ei,     Desculpa, eu tinha feito errado... Mas agora ta como vc me passou, mas continua abrindo várias instâncias...   V meu código como ficou:         var
  Hwnd: Thandle;
begin
  Hwnd := FindWindow ('TfrmMenu', 'frmMenu');
  if Hwnd = 0 then
  begin
    Application.Initialize;
    Application.Title := 'SysErp';
    Application.CreateForm(TdmAdo, dmAdo);
    Application.CreateForm(TfrmMenu, frmMenu);
    Application.Run;
  end
  else
  begin
    MessageDlg ('Já existe uma instância deste programa aberta, verifique por favor!!',mtinformation,[mbok], 0);
    SetForegroundWindow (Hwnd);
  end;
end.
Responder

Gostei + 0

31/03/2010

Wesley Yamazack

Olá amigo,

 Fiz um exemplo com os mesmos nomes de forms que você e funcionou, faça uma exemplo de teste e me mande, pois aqui esta funcionando.
Veja o codigo abaixo :

program Project1;

uses
  Forms,
  Windows,
  Dialogs,
  Unit1 in 'Unit1.pas' ,
  Unit2 in 'Unit2.pas' {dmAdo: TDataModule};

{$R *.res}

var
  Hwnd: Thandle;
begin
  Hwnd := FindWindow ('TfrmMenu', 'frmMenu');
  if Hwnd = 0 then
  begin
    Application.Initialize;
    Application.Title := 'SysErp';
  Application.CreateForm(TdmAdo, dmAdo);
  Application.CreateForm(TfrmMenu, frmMenu);
  Application.Run;
  end
  else
  begin
    MessageDlg ('Já existe uma instância deste programa aberta, verifique por favor!!',mtinformation,[mbok], 0);
    SetForegroundWindow (Hwnd);
  end;
end.



Um abraço

Wesley Y
Responder

Gostei + 0

31/03/2010

Irenildo Carvalho

Olha,   Continua abrindo várias instâncias... V aí mano... Valeu...   program SysErp; uses
  Forms,
  Windows,
  Dialogs,
  XPMan,
  Funcao in 'Funcao.pas',
  Padrao in 'Padrao.pas' ,
  dadADO in 'dadADO.pas' {dmAdo: TDataModule},
  RelPadrao in 'RelPadrao.pas' ,
  CadPadrao in 'CadPadrao.pas' ,
  FilRelPadrao in 'FilRelPadrao.pas' ,
  CadPadraoDetalhe in 'CadPadraoDetalhe.pas' ,
  Menu in 'Menu.pas',
  CadGrupo in 'CadGrupo.pas' ,
  CadGrupoDetalhe in 'CadGrupoDetalhe.pas' ,
  CadEstado in 'CadEstado.pas' ,
  CadEstadoDetalhe in 'CadEstadoDetalhe.pas' ,
  Endereco in 'Endereco.pas' {fraEndereco: TFrame},
  CadRepresentante in 'CadRepresentante.pas' ,
  CadRepresentanteDetalhe in 'CadRepresentanteDetalhe.pas' ,
  CadCliente in 'CadCliente.pas' ,
  CadClienteDetalhe in 'CadClienteDetalhe.pas' ,
  CadProduto in 'CadProduto.pas' ,
  CadProdutoDetalhe in 'CadProdutoDetalhe.pas' ,
  FilRelComissaoVendedor in 'FilRelComissaoVendedor.pas' ,
  RelComissaoVenda in 'RelComissaoVenda.pas' ,
  FilRelVenda in 'FilRelVenda.pas' ,
  RelVendaPeriodo in 'RelVendaPeriodo.pas' ,
  CadEmpresa in 'CadEmpresa.pas' ,
  CadCodigoFiscal in 'CadCodigoFiscal.pas' ,
  CadCodigoFiscalDetalhe in 'CadCodigoFiscalDetalhe.pas' ,
  Sobre in 'Sobre.pas' ,
  Permissao in 'Permissao.pas' ,
  CadOrdemServico in 'CadOrdemServico.pas' ,
  CadOrdemServicoDetalhe in 'CadOrdemServicoDetalhe.pas' ,
  FilRelListaPreco in 'FilRelListaPreco.pas' ,
  RelListaPreco in 'RelListaPreco.pas' ,
  Extenso in 'Extenso.pas',
  RelOrdemServico in 'RelOrdemServico.pas' ,
  login in 'login.pas' ,
  CadUsuarioDetalhe in 'CadUsuarioDetalhe.pas' ,
  CadUsuario in 'CadUsuario.pas' ,
  CadParametro in 'CadParametro.pas' ,
  ReajustePreco in 'ReajustePreco.pas' ,
  CadFornecedor in 'CadFornecedor.pas' ,
  CadFornecedorDetalhe in 'CadFornecedorDetalhe.pas' ,
  CadNotaFiscalFornec in 'CadNotaFiscalFornec.pas' ,
  CadNotaFiscalFornecDetalhe in 'CadNotaFiscalFornecDetalhe.pas' ,
  CadTipoTitulo in 'CadTipoTitulo.pas' ,
  CadTipoTituloDetalhe in 'CadTipoTituloDetalhe.pas' ,
  CadFormaPagamento in 'CadFormaPagamento.pas' ,
  CadFormaPagamentoDetalhe in 'CadFormaPagamentoDetalhe.pas' ,
  FilCadPadrao in 'FilCadPadrao.pas' ,
  CadTituloPagar in 'CadTituloPagar.pas' ,
  CadTituloPagarDetalhe in 'CadTituloPagarDetalhe.pas' ,
  FilCadTituloPagar in 'FilCadTituloPagar.pas' ,
  CadTituloReceber in 'CadTituloReceber.pas' ,
  FilCadTituloReceber in 'FilCadTituloReceber.pas' ,
  CadTituloReceberDetalhe in 'CadTituloReceberDetalhe.pas' ,
  CadAcertoEstoqueProduto in 'CadAcertoEstoqueProduto.pas' ,
  CadAcertoEstoqueProdutoDetalhe in 'CadAcertoEstoqueProdutoDetalhe.pas' ,
  InscE32 in 'InscE32.pas',
  FilRelInventarioEstoqueProdutos in 'FilRelInventarioEstoqueProdutos.pas' ,
  RelInventarioEstoqueProduto in 'RelInventarioEstoqueProduto.pas' ,
  FilRelMovimentacaoProduto in 'FilRelMovimentacaoProduto.pas' ,
  RelMovimentacaoProduto in 'RelMovimentacaoProduto.pas' ,
  FilRelFluxoCaixa in 'FilRelFluxoCaixa.pas' ,
  RelFluxoCaixa in 'RelFluxoCaixa.pas' ,
  RelTituloReceber in 'RelTituloReceber.pas' ,
  RelTituloPagar in 'RelTituloPagar.pas' ,
  CadBoletoBancario in 'CadBoletoBancario.pas' ,
  CadBoletoBancarioDetalhe in 'CadBoletoBancarioDetalhe.pas' ,
  CadPedidoProdutoDetalhe in 'CadPedidoProdutoDetalhe.pas' ,
  CadPedidoProduto in 'CadPedidoProduto.pas' ,
  CadCompraProdutoDetalhe in 'CadCompraProdutoDetalhe.pas' ,
  CadCompraProduto in 'CadCompraProduto.pas' ,
  CadRamoAtividade in 'CadRamoAtividade.pas' ,
  CadRamoAtividadeDetalhe in 'CadRamoAtividadeDetalhe.pas' ,
  CadFormaPagamentoCaixa in 'CadFormaPagamentoCaixa.pas' ,
  CadFormaPagamentoCaixaDetalhe in 'CadFormaPagamentoCaixaDetalhe.pas' ,
  CadTerminal in 'CadTerminal.pas' ,
  CadTerminalDetalhe in 'CadTerminalDetalhe.pas' ,
  ConfereCaixa in 'ConfereCaixa.pas',
  ConsultaPadrao in 'ConsultaPadrao.pas' ,
  ImpPadrao in 'ImpPadrao.pas' ,
  ConsultaTransacaoParcela in 'ConsultaTransacaoParcela.pas' ,
  ConsultaTransacao in 'ConsultaTransacao.pas' ,
  ConsultaTransacaoItem in 'ConsultaTransacaoItem.pas' ,
  CadCheque in 'CadCheque.pas' ,
  CadChequeDetalhe in 'CadChequeDetalhe.pas' ,
  RelProduto in 'RelProduto.pas' ,
  CadNotaFiscalDetalhe in 'CadNotaFiscalDetalhe.pas' ,
  CadNotaFiscal in 'CadNotaFiscal.pas' ,
  CadVenda in 'CadVenda.pas' ,
  CadVendaDetalhe in 'CadVendaDetalhe.pas' ,
  FilCadNotaFiscal in 'FilCadNotaFiscal.pas' ,
  FilCadVenda in 'FilCadVenda.pas' ,
  FilReltipovenda in 'FilReltipovenda.pas' ,
  RelTipovenda in 'RelTipovenda.pas' ,
  FilRelExtratoComissao in 'FilRelExtratoComissao.pas' ,
  CadClienteHistorico in 'CadClienteHistorico.pas' ,
  CadFabricante in 'CadFabricante.pas' ,
  CadFabricanteDetalhe in 'CadFabricanteDetalhe.pas' ,
  CadProdutoHistorico in 'CadProdutoHistorico.pas' ,
  CadFornecedorHistorico in 'CadFornecedorHistorico.pas' ,
  CadFabricanteHistorico in 'CadFabricanteHistorico.pas' ,
  RelVenda in 'RelVenda.pas' ,
  CadGrupoContaFinanceira in 'CadGrupoContaFinanceira.pas' ,
  CadGrupoContaFinanceiraDetalhe in 'CadGrupoContaFinanceiraDetalhe.pas' ,
  CadContaFinanceira in 'CadContaFinanceira.pas' ,
  CadContaFinanceiraDetalhe in 'CadContaFinanceiraDetalhe.pas' ,
  MovimentacaoFinanceira in 'MovimentacaoFinanceira.pas' ,
  CadMovimentacaoFinanceiraDetalhe in 'CadMovimentacaoFinanceiraDetalhe.pas' ,
  RelExtrato in 'RelExtrato.pas' ,
  FilRelDre in 'FilRelDre.pas' ,
  RelDre in 'RelDre.pas' ,
  FilRelResumoReceitaDespesa in 'FilRelResumoReceitaDespesa.pas' ,
  RelResumoReceitaDespesa in 'RelResumoReceitaDespesa.pas' ,
  CadPedido in 'CadPedido.pas' ,
  CadPedidoDetalhe in 'CadPedidoDetalhe.pas' ,
  RelPedido in 'RelPedido.pas' ,
  FilRelResumoMovimento in 'FilRelResumoMovimento.pas' ,
  RelResumoMovimento in 'RelResumoMovimento.pas' ,
  FilRelCustoApuradoCaixa in 'FilRelCustoApuradoCaixa.pas' ,
  RelCustoApuradoCaixa in 'RelCustoApuradoCaixa.pas' ,
  CadKitProduto in 'CadKitProduto.pas' ,
  CadKitProdutoDetalhe in 'CadKitProdutoDetalhe.pas' ,
  ResultadoOs in 'ResultadoOs.pas' ,
  ConsultaCaixaOs in 'ConsultaCaixaOs.pas' ,
  FilrelDescricao in 'FilrelDescricao.pas' ,
  RelResultado in 'RelResultado.pas' ,
  RelResultadoOs in 'RelResultadoOs.pas' ,
  RelTituloReceber2 in 'RelTituloReceber2.pas' ,
  RelDescricao in 'RelDescricao.pas' ,
  RelExtratoComissao in 'RelExtratoComissao.pas' ,
  CadServico in 'CadServico.pas' ,
  CadServicoDetalhe in 'CadServicoDetalhe.pas' ,
  RelPedidoCompra in 'RelPedidoCompra.pas' ,
  RelVendaServico in 'RelVendaServico.pas' ,
  Cadveiculo in 'Cadveiculo.pas' ,
  CadVeiculoDetalhe in 'CadVeiculoDetalhe.pas' ,
  uAguarde in 'uAguarde.pas' ; {$R *.res} var
  Hwnd: Thandle;
begin
  Hwnd := FindWindow ('TfrmMenu', 'frmMenu');
  if Hwnd = 0 then
  begin
    Application.Initialize;
    Application.Title := 'SysErp';
    Application.CreateForm(TdmAdo, dmAdo);
    Application.CreateForm(TfrmMenu, frmMenu);
    Application.Run;
  end
  else
  begin
    MessageDlg ('Já existe uma instância deste programa aberta, verifique por favor!!',mtinformation,[mbok], 0);
    SetForegroundWindow (Hwnd);
  end;
end.  
Responder

Gostei + 0

01/04/2010

Wesley Yamazack

Olá amigo,
  Faça um exemplo, somente com dois forms, e me mande para poder analisar, os fontes desta forma não adiantam pois esta igual ao meu.

Um abraço

Wesley Y
Responder

Gostei + 0

01/04/2010

Irenildo Carvalho

Então mano
Responder

Gostei + 0

01/04/2010

Irenildo Carvalho

Então mano
Responder

Gostei + 0

01/04/2010

Irenildo Carvalho

Então mano
Responder

Gostei + 0

01/04/2010

Irenildo Carvalho

Então mano
Responder

Gostei + 0

01/04/2010

Irenildo Carvalho

Então mano
Responder

Gostei + 0

01/04/2010

Irenildo Carvalho

Então mano
Responder

Gostei + 0

01/04/2010

Irenildo Carvalho

Então mano
Responder

Gostei + 0

01/04/2010

Irenildo Carvalho

Então mano
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar