Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
>
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.
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.
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!
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.
Tem uma outra API, FlashWindow.
Ela faz piscar a janela, igual ao MSN.
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.
If App.PrevInstance Then
'Ja esta aberto
End If