MAXIMIZAR JANELA EM PRIMEIRO PLANO

MICHAELL 09/10/2013 12:13:39
#429745
Olá amigos,

estou tentando fazer com que meu programa fique em primeiro plano caso um determinado lembrete esteja no horario programado... minha dúvida é: como colocar o meu programa desenvolvido em VB6 em primeiro plano quando se está em outro programa, como por exemplo o Chrome. é possível?

já tentei o seguinte:

If MDIPrincipal.WindowState = vbMinimized Then
MDIPrincipal.WindowState = vbMaximized
End If

ele maximiza, porém por trás do programa que estiver aberto.
se nenhum programa está aberto, funciona normalmente.

como colocar em primerio plano no windows?
valew galera.
GANDA.NICK 09/10/2013 13:04:45
#429748
Resposta escolhida
Olá,

veja se algumas destas soluções funcionam:

Private Declare Function BringWindowToTop Lib [Ô]user32[Ô] (ByVal hwnd As Long) As Long

para chamar:
BringWindowToTop Me.hwnd



Me.SetFocus

AppActivate Me.Caption

Me.Show



Se nenhuma funcionar tente a API SetTopMostWindow
MICHAELL 09/10/2013 14:07:16
#429754
valew amigao...
nao imaginava que teria essa possibilidade. funcionou perfeitamente... ele maximiza sempre... na frente de qualquer outro programa..

o único porém, é que ele deixa o FOCU no programa que já estava a frente.
Se pressionar qualquer tecla no teclado, o evento ocorre na tela que estava aberta antes e nao no meu sistema.

já tentei colocar MDIPrincipal.SetFocus, Me.SetFocus, cmdBotao.SetFocus e nao funciona.

será que voce pode me ajudar nesse detalhe?


GANDA.NICK 09/10/2013 15:33:52
#429763
veja a 3º solução:

AppActivate Me.Caption
MICHAELL 09/10/2013 15:41:27
#429765
Citação:

:
veja a 3º solução:

AppActivate Me.Caption



ja havia tentado isso.. nao deu tambem.
coloquei todas as opcoes que voce mandou ..

ele apenas aparece na frente, mas nao da o focu. Qualquer tecla ele da o evento na tela que estava na frente.
GANDA.NICK 09/10/2013 17:12:59
#429788
use esta:

Private Declare Function SetForegroundWindow Lib [Ô]user32.dll[Ô] (ByVal hwnd As Long) As Long



SetForegroundWindow Me.hwnd
Me.Command1.SetFocus
MICHAELL 09/10/2013 17:32:03
#429789
Citação:

:
use esta:

Private Declare Function SetForegroundWindow Lib [Ô]user32.dll[Ô] (ByVal hwnd As Long) As Long



SetForegroundWindow Me.hwnd
Me.Command1.SetFocus



assim nao funcionou
SetForegroundWindow Me.hwnd

tive que colocar assim:
GetForegroundWindow

mesmo assim nao funcionou...
ele até seleciona o botao (com tracejado em volta) mas ao pressionar enter, o evento nao é disparado. Só clicando com o mouse para funcionar.
GANDA.NICK 09/10/2013 17:57:45
#429791
e com o space em vez do enter, funciona?


Private Declare Function SetForegroundWindow Lib [Ô]user32.dll[Ô] (ByVal hwnd As Long) As Long



SetForegroundWindow Me.hwnd
Me.Command1.SetFocus


aqui funciona bem...
MICHAELL 09/10/2013 18:03:03
#429792
mas esse seria o mesmo que usar
Private Declare Function BringWindowToTop Lib [Ô]user32[Ô] (ByVal hwnd As Long) As Long

certo?

aqui nao funcionou.
o foco fica na tela anterior (que ja estava aberta).

GANDA.NICK 09/10/2013 18:09:40
#429794
vc secalhar copiar logo assim que postei, eu tinha posto a API GetForegroundWindow em vez de SetForegroundWindow, mas editei logo de seguida...

use só a API SetForegroundWindow

Private Declare Function SetForegroundWindow Lib [Ô]user32.dll[Ô] (ByVal hwnd As Long) As Long



SetForegroundWindow Me.hwnd
Me.Command1.SetFocus



se não conseguir, não lhe posso ajudar mais

té+
MICHAELL 09/10/2013 19:56:27
#429802
realmente nao da certo nao. fiz um teste um em projeto novo e mesma coisa.
ele aparece, mas o foco fica na janela anterior.

estou enviando em anexo
Tópico encerrado , respostas não são mais permitidas