• 0
Sign in to follow this  
Guest - Renato -

Fechar Janelas Do Windows

Question

Guest - Renato -

Tem como fechar todas as janelas ou jogos que estiverem abertos pelo VB?

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0
Guest - Renato -

Cara eu vi os exemplos mas não tá dando pra fazer. Eu queria fechar todas as janelas abertas e eu acho que na API DestroyWindow é preciso especificar a janela.

Share this post


Link to post
Share on other sites
  • 0

As janelas abertas em questão seria do seu software ou janelas de outros aplicativos?

Caso 'software': Um 'Unload' em cada janela não resolve?

Caso 'outros aplicativos': Na API 'DestroyWindow' você precisa passar (especificar) o 'Handle' (um código de indentificação que o MS Windows dá para toda janela criada por ele (Windows)) da janela do aplicativo externo. Como obter o Handle da janela do aplicativo externo? Aí você usa uma outra API, que se chama 'FindWindow'.

Um exemplo de como usar a 'DestroyWindow' e 'FindWindow':

Dim h As Long

h = FindWindow(vbNullString, "Calculadora") 'Pega o 'Handle' da calculadora do Windows. OBS: A calculadora tem que está aberta!
DestroyWindow h 'Destrói a janela do aplicativo Calculadora.

Qualquer dúvida estamos aí, falows!

Share this post


Link to post
Share on other sites
  • 0
Guest - Renato -

Não dá dando certo. Tá aparecendo "Sub or Function not defined"

Share this post


Link to post
Share on other sites
  • 0
Cara eu vi os exemplos mas não tá dando pra fazer. Eu queria fechar todas as janelas abertas e eu acho que na API DestroyWindow é preciso especificar a janela.

Sim, e para isso é que existem outras funções (como EnumWindows e FindWindow) que permitem "encontrar" as janelas abertas.

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0
Guest - Renato -

Amigo Graymalkin tinha como você me dizer como ficaria o código completo para fechar todas as janelas q uma pessoa abrir?

Share this post


Link to post
Share on other sites
  • 0

Não dá dando certo. Tá aparecendo "Sub or Function not defined"

Adicione um módulo (Menu 'Project' -> opção 'Add Module') ao seu projeto e coloque no módulo:

Public Declare Function DestroyWindow Lib "user32" Alias "DestroyWindow" (ByVal hwnd As Long) As Long

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Pronto! Agora você poderá usar as API's declaradas (DestroyWindow e FindWindow). O trecho de código que passei acima, no outro post (o quarto post) irá funcionar.

Falows! Qualquer coisa estmos aí!

Share this post


Link to post
Share on other sites
  • 0
Guest - Renato -

Eu fiz exatamente como você disse mas a Calculadora continuou aberta. O q pode ter acontecido?

Share this post


Link to post
Share on other sites
  • 0

É verdade! A API 'DestroyWindow' não funcionou. Mas eu consegui fazer o que você quer, oculta a janela de aplicativo externo, porém o aplicativo continua em execução, ou seja, o aplicativo externo fica invisível.

Declare as API 's:

Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

'As duas API's no módulo de seu projeto.
Em um procedimento qualquer:
h = FindWindow(vbNullString, "Calculadora")
ShowWindow h, 0

Em ShowWindow, você usa no segundo parâmetro:

0 para ocultar a janela.

1 para exibir a janela.

Qualquer coisa, post! Falows!

Share this post


Link to post
Share on other sites
  • 0
Guest - Renato -

Deu certo mas e se eu quiser fechar o Internet Explorer?

Eu tentei colocar

[h = FindWindow(vbNullString, "Internet Explorer")]

mas não deu certo.

Share this post


Link to post
Share on other sites
  • 0
Deu certo mas e se eu quiser fechar o Internet Explorer?

Eu tentei colocar

[h = FindWindow(vbNullString, "Internet Explorer")]

mas não deu certo.

O Internet Explorer realmente não dá muito certo fechar não... se não me engano, trava tudo. De qualquer maneira, o problema no seu código é que o título da janela deve ser *exatamente* igual ao do programa (e uma janela do Internet Explorer nunca se chama apenas "Internet Explorer" [sempre tem o título do site junto]).

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

GetForegroundWindow() para pegar a janela ativa e GetWindowText() para pegar o texto de uma janela.

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this