Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rogério Orlando

Codigo para informar que programa já está aberto.

Recommended Posts

Boa tarde .

 

Novamente necessito do conhecimento dos companheiros.

 

Gostaria de implementar meu aplicativo com um código que informasse ao usuário, ao clicar no ícone para abrir o programa, que este já está aberto eminimizado, quer seja na barra de tarefas, quer seja no systray.

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

If App.PrevInstance Then

'Ja esta aberto

End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

If App.PrevInstance Then
	  'Ja esta aberto
   End If

 

Onde coloco o código?

Eu uso o VB 6.0 para criação do aplicativo.

 

Já tentei no activate do form inicial, mas não deu certo.

 

Poderia informar o código completo.

 

obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei onde estava quando disse que não funcionou.

 

Desculpe-me, funcionou perfeitamente quando o inseri no activate do form.

 

Private Sub Form_Activate()
If App.PrevInstance Then
	MsgBox "Instância já aberta"
   End
End If
End Sub

Tem como fechar esta instância e maximizar a que está na barra?

 

Valeu novamente.

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca isso no Load do form.

O Activate é executado toda vez que o form fica ativo, ou seja ganha foco, se esta minimizado maximiza.

 

 

para maximizar tente isso:

 

'Em um módulo coloque isto
Declare Function SetActiveWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

'Isto aqui vai antes do End do App.PrevInstance
Dim winHWND as long
winHWND = FindWindow(vbNullString,"Titulo da janela")

SetActiveWindow winHWND

 

Até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu uma mexida no código e funcionou legal. só que que não funciona quando o form não tem borderStile.

 

Você teria alguma sugestão?

 

Private Sub Form_Activate()
If App.PrevInstance Then
	Form1.Visible = False
	Form1.Caption = "form2"
	MsgBox "O Sr. já está com uma instância aberta. Vou abri-la para o Sr."
	winHWND = FindWindow(vbNullString, "Form1")
	SetActiveWindow winHWND
	AppActivate "Form1"
	SendKeys "% {Down 0} {Enter}", 1
	End
End If
End Sub

valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem uma outra API, FlashWindow.

Ela faz piscar a janela, igual ao MSN.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradecido pela informação, entretanto não resolveu meu problema.

 

Necessito de algo que, temporariamente mude o borderstile para que maximize o form e depois volte o borderstile para a condição anterior (0).

 

 

valeu até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.