Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
56
Assunto : Visual Basic
Titulo: Restaure a janela de uma outra aplicação

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon


Rotinas para descobrir se sua aplicação já se encontra rodando (caso o usuário a tenha chamado mais de uma vez) já foram mostradas aqui.

Mas quando uma situação dessas ocorre, pode ser interessante restaurar a janela que já estava aberta. Quer dizer, se o usuário tentar abrir uma 2a vez a aplicação, ao invés dela ser novamente aberta a janela da aplicação é restaurada para que o usuário trabalhe.

Para fazer isso precisaremos realizar uma comunicação entre 2 aplicações distintas. A 2a cópia da aplicação, ao descobrir que já existe uma primeira, deve transmitir uma mensagem para a primeira pedindo que esta seja restaurada e depois fechar a si própria (a 2a cópia, a 1a permanece)

Para fazermos isso precisaremos utilizar 2 funções da API : FindWindow, que permite localizar uma janela no windows a partir de seu título e SendMessage, que permite transmitir uma mensagem do windows a uma outra aplicação.
Veja como fica o código :

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const SC_RESTORE = &HF120&
Public Const WM_SYSCOMMAND = &H112

Sub RestoreWindow(sWindowTitle As String)

Dim hWnd As Long hWnd =FindWindow(vbNullString, sWindowTitle)
If hWnd <> 0 Then
SendMessage hWnd,WM_SYSCOMMAND, SC_RESTORE, 0&
Unload me
Else
Beep
End If

End Sub

A declaração das funções devem estar dentro de um módulo. A sub, dentro de um form (por causa do unload me). O evento form_load deve chamar essa sub passando para ela o título da janela. E pronto : Se você tentar chamar 2 vezes sua aplicação, na 2a vez ela irá apenas restaurar sua janela.

Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 8/10/2006 12:10:00 PM
nome: Alessandro
email: alebettio@yahoo.com.br
comentário:
"Búfalo",

Boa tarde!
Muito legais essas dicas sobre essa API SendMessage... Mas eu gostaria de saber se você poderia me ajudar com relação a um parâmetro de uma Janela de Windows aberta. Eu preciso setar o parâmetro wMsg com um OK ou SIM como resposta...
Você pode ajudar? Ou passar a relação dos valores que o parâmetro wMsg pode assumir (&H012C, &H10, por exemplos).
Grato


 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br