Пытались ли вы определить, какое окно в вашем приложении имеет фокус или какое окно любого приложения имеет фокус?
Peder Rice
это актуально stackoverflow.com/questions/2423234/… поэтому, если вы хотите, чтобы для этого было нажатие кнопки, стоит убедиться, что ваша форма не фокусируется.
barlop
Ответы:
166
См. Пример того, как это можно сделать с полным исходным кодом здесь:
примечание newb, чтобы заставить его работать, using System.Runtime.InteropServices; и где разместить строки импорта dll и static extern. вставка в класс
barlop 04
1
@smink Как получить активное окно переднего плана для конкретного пользователя (скажем, процесс выполняется как служба).
Если все приложение не активно (фокус находится у другой программы), то для IsActive не будет установлено значение true ни в одном окне.
Тодд
На самом деле это могло быть неправильно, в моем случае я пытался получить доступ к массиву Window в потоке, отличном от пользовательского интерфейса. Однако посмотрите и на это, если я все еще прав: social.msdn.microsoft.com/Forums/vstudio/en-US/…
Тодд,
4
Переберитесь Application.Current.Windows[]и найдите тот, у которого есть IsActive == true.
Разве это не сработает только для окон в текущем приложении .Net? Я думаю, что d4nt хочет получить заголовок текущего активного окна на рабочем столе, независимо от того, какому приложению оно принадлежит.
Quagmire
3
Используйте Windows API. Звоните GetForegroundWindow().
вы можете использовать класс процесса, это очень просто. используйте это пространство имен
using System.Diagnostics;
если вы хотите сделать кнопку, чтобы окно стало активным.
privatevoid button1_Click(object sender,EventArgs e){Process currentp =Process.GetCurrentProcess();TextBox1.Text= currentp.MainWindowTitle;//this textbox will be filled with active window.}
Ответы:
См. Пример того, как это можно сделать с полным исходным кодом здесь:
http://www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c/
Отредактировано с комментариями @Doug McClean для большей корректности.
источник
using System.Runtime.InteropServices;
и где разместить строки импорта dll и static extern. вставка в классЕсли вы говорили о WPF, используйте:
источник
Переберитесь
Application.Current.Windows[]
и найдите тот, у которого естьIsActive == true
.источник
Используйте Windows API. Звоните
GetForegroundWindow()
.GetForegroundWindow()
даст вам дескриптор (названныйhWnd
) активного окна.Документация: функция GetForegroundWindow | Документы Microsoft
источник
На основе функции GetForegroundWindow | Документы Microsoft :
Он поддерживает символы UTF8.
источник
Если случится так, что вам понадобится текущая активная форма из вашего приложения MDI : (MDI- Multi Document Interface).
источник
вы можете использовать класс процесса, это очень просто. используйте это пространство имен
если вы хотите сделать кнопку, чтобы окно стало активным.
источник