Você estava tentando determinar qual janela em seu aplicativo tem foco ou qual janela de qualquer aplicativo tem foco?
Peder Rice de
isso é relevante stackoverflow.com/questions/2423234/… então se você quiser um clique de botão para fazer isso, vale a pena ter certeza de que seu formulário não terá o foco.
barlop de
Respostas:
165
Veja um exemplo de como você pode fazer isso com o código-fonte completo aqui:
uma nota newb, para fazê-lo funcionar, using System.Runtime.InteropServices; e re onde colocar a importação dll e as linhas externas estáticas. colando dentro da classe
barlop
1
@smink Como obter a janela de primeiro plano ativa para um usuário específico (digamos que o processo é executado como serviço).
Se o aplicativo inteiro não estiver ativo (outro programa está em foco), nenhuma janela terá IsActive definido como verdadeiro.
Todd
Na verdade, isso pode estar errado, no meu caso, eu estava tentando acessar o array Window em um thread não-UI. No entanto, veja também caso eu ainda esteja certo: social.msdn.microsoft.com/Forums/vstudio/en-US/…
Todd
4
Faça um loop Application.Current.Windows[]e encontre aquele com IsActive == true.
Isso não funcionaria apenas para as janelas no aplicativo .Net atual? Acho que d4nt deseja obter o título da janela ativa atual na área de trabalho, não importa a qual aplicativo ela pertence.
Quagmire de
3
Use a API do Windows. Ligue GetForegroundWindow().
GetForegroundWindow()lhe dará um identificador (nomeado hWnd) para a janela ativa.
você pode usar a classe de processo, é muito fácil. use este namespace
using System.Diagnostics;
se você quiser fazer um botão para obter a janela ativa.
privatevoid button1_Click(object sender,EventArgs e){Process currentp =Process.GetCurrentProcess();TextBox1.Text= currentp.MainWindowTitle;//this textbox will be filled with active window.}
Respostas:
Veja um exemplo de como você pode fazer isso com o código-fonte completo aqui:
http://www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c/
Editado com comentários de @Doug McClean para melhor correção.
fonte
using System.Runtime.InteropServices;
e re onde colocar a importação dll e as linhas externas estáticas. colando dentro da classeSe você estava falando sobre WPF, use:
fonte
Faça um loop
Application.Current.Windows[]
e encontre aquele comIsActive == true
.fonte
Use a API do Windows. Ligue
GetForegroundWindow()
.GetForegroundWindow()
lhe dará um identificador (nomeadohWnd
) para a janela ativa.Documentação: função GetForegroundWindow | Microsoft Docs
fonte
Baseado na função GetForegroundWindow | Microsoft Docs :
Suporta caracteres UTF8.
fonte
Se acontecer de você precisar do Current Active Form do seu aplicativo MDI : (MDI- Multi Document Interface).
fonte
você pode usar a classe de processo, é muito fácil. use este namespace
se você quiser fazer um botão para obter a janela ativa.
fonte