Pergunta

Em um aplicativo no qual estou trabalhando atualmente, um requisito é trazer para primeiro plano uma janela de um aplicativo externo.Fazer chamadas de API do Win32, como a janela BringWindowToTop e SetForeground, não funciona o tempo todo.Isso se deve a algumas restrições do Windows XP.O que eu gostaria de fazer é enviar simular um clique do mouse no botão da janela na barra de tarefas, o que espero que traga a janela para a frente.Alguém sabe como isso é possível?

Foi útil?

Solução

Confira a seção "Como roubar o foco em 2K/XP" em http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx, pois é exatamente isso que você precisa.Eu não seguiria o caminho da barra de tarefas, pois ela poderia estar oculta ou simplesmente não estar lá.

Outras dicas

É possível.Mas é extremamente superficial.Seu aplicativo também pode falhar com a próxima versão do Windows, pois não está documentado.O que você precisa fazer é encontrar o identificador da janela da barra de tarefas, encontrar o identificador da janela filho que representa o botão e enviar uma mensagem WM_MOUSEDOWN (eu acho).

Aqui está um pouco sobre como encontrar o identificador da janela da barra de tarefas:

http://www.codeproject.com/

FWIW, as restrições em BringWindowToTop/SetForeground existem porque é irritante quando uma janela rouba o foco.Isso pode não importar se você estiver trabalhando em um ambiente corporativo.Apenas tenha isso em mente.:)

Usei isso em um programa onde precisava simular cliques e movimentos do mouse;

Biblioteca global de mouse e teclado

Para ser honesto, nunca tive problemas em trazer uma janela para o primeiro plano no XP/Vista/2003/2000.

Você precisa ter certeza de fazer o seguinte:

  1. Verifique se IsIconic (minimizado)
  2. Se o número 1 resultar em True, ligue para o ShowWindow Passando SW_RESTORE
  3. Então chame SetForegroundWindow

Nunca tive problemas em pensar em fazer isso com essas etapas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top