Abrir a mesma instancia em vez de outra

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Eduardo Pinho
Colaborador
Colaborador
Mensagens: 72
Registrado em: 13 Jun 2014 19:30
Localização: Niteroi

Abrir a mesma instancia em vez de outra

Mensagem por Eduardo Pinho »

Alguem sabe se no Harbour (ou no Windows) existe algum coisa que eu possa fazer pra quando eu clicar num executavel, maximizar uma instancia já aberta em vez de abrir outra?
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Abrir a mesma instancia em vez de outra

Mensagem por NiltonGM »

No prg principal (Main)

SET MULTIPLE OFF WARNING
Nilton Medeiros
nilton@sistrom.com.br
clipsis
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 02 Jun 2010 11:53
Localização: brasil

Abrir a mesma instancia em vez de outra

Mensagem por clipsis »

Oi, boa tarde

Esse comando existe mesmo ?

SET MULTIPLE OFF WARNING

Estou tentando, mas aprece erro de compilação

Código: Selecionar todos

Compiling 'sigepa.prg'...
sigepa.prg(30) Error E0030  Syntax error "syntax error at 'MULTIPLE'"
1 error
Clipper 5.2/Blinker
Harbour 3.0/Mingw
Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

Abrir a mesma instancia em vez de outra

Mensagem por Softwhouse »

Esse comando é da minigui.
Fernando
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Abrir a mesma instancia em vez de outra

Mensagem por Itamar M. Lins Jr. »

Ola!
Alguem sabe se no Harbour (ou no Windows) existe algum coisa que eu possa fazer pra quando eu clicar num executavel, maximizar uma instancia já aberta em vez de abrir outra?
Estou entendendo o Aplicativo detectar que já está aberto avisar, sair e maximizar o outro, correto ?

Precisa usar MT.
Tem aqui no forum explicações não sei se nesse nível.


Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Abrir a mesma instancia em vez de outra

Mensagem por asimoes »

Tenho isso:

ASAPREV - Versão 32 bits é o nome que está no caption da janela

Código: Selecionar todos

     WITH OBJECT objShell := Win_OleCreateObject("WScript.Shell")
         :AppActivate("ASAPREV - Versão 32 bits")   
         :SendKeys("% x")
      END
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Abrir a mesma instancia em vez de outra

Mensagem por asimoes »

Eu faço assim, na function INIT a função oClPF:SistemaExecutando verifica se existe algum processo ou instância do aplicativo em execução, se existe, o objeto WScript.Shell
ativa a janela "ASAPREV - Versão 32 bits" usando o método AppActivate e envia uma tecla SendKeys para exibir a janela que já está em uso e em seguida fecha a janela que está em execução ou que foi chamada novamente.

Código: Selecionar todos

  If oClPF:SistemaExecutando()
      WITH OBJECT objShell := Win_OleCreateObject("WScript.Shell")
         :AppActivate("ASAPREV - Versão 32 bits")   
         :SendKeys("%")
      END
      oClPF:SaidaSist()
   Endif
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Abrir a mesma instancia em vez de outra

Mensagem por asimoes »

Fiz outro teste aqui nem precisa de :SendKeys("%"), basta AppActivate para ativar a janela que esteja minimizada

Correção: depois de AppActivate usar o método Sleep

:Sleep(1000)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder