Página 1 de 1

Abrir a mesma instancia em vez de outra

Enviado: 08 Fev 2019 09:08
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?

Abrir a mesma instancia em vez de outra

Enviado: 12 Fev 2019 21:38
por NiltonGM
No prg principal (Main)

SET MULTIPLE OFF WARNING

Abrir a mesma instancia em vez de outra

Enviado: 02 Jul 2020 10:49
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

Abrir a mesma instancia em vez de outra

Enviado: 02 Jul 2020 11:45
por Softwhouse
Esse comando é da minigui.

Abrir a mesma instancia em vez de outra

Enviado: 02 Jul 2020 12:28
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.

Abrir a mesma instancia em vez de outra

Enviado: 02 Jul 2020 14:17
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

Abrir a mesma instancia em vez de outra

Enviado: 02 Jul 2020 14:36
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

Abrir a mesma instancia em vez de outra

Enviado: 02 Jul 2020 14:39
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)