eine neue Notiz, um sie zum Laufen zu bringen using System.Runtime.InteropServices; und wo die DLL-Import- und statischen externen Zeilen abgelegt werden sollen. Einfügen in die Klasse
Barlop
1
@smink So erhalten Sie ein aktives Vordergrundfenster für einen bestimmten Benutzer (sagen wir, der Prozess wird als Dienst ausgeführt).
Wenn die gesamte Anwendung nicht aktiv ist (ein anderes Programm hat den Fokus), wird in keinem Fenster IsActive auf true gesetzt.
Todd
Eigentlich könnte das falsch sein, in meinem Fall habe ich versucht, auf das Window-Array in einem Nicht-UI-Thread zuzugreifen. Sehen Sie dies jedoch auch, falls ich noch Recht habe: social.msdn.microsoft.com/Forums/vstudio/en-US/…
Todd
4
Schleife vorbei Application.Current.Windows[]und finde den mit IsActive == true.
Würde dies nicht nur für die Fenster in der aktuellen .Net-Anwendung funktionieren? Ich denke, d4nt möchte den Titel des aktuell aktiven Fensters auf dem Desktop erhalten, egal zu welcher Anwendung es gehört.
Sumpf
3
Verwenden Sie die Windows-API. Rufen Sie an GetForegroundWindow().
GetForegroundWindow()gibt Ihnen ein Handle (benannt hWnd) für das aktive Fenster.
Sie können Prozessklasse verwenden, es ist sehr einfach. Verwenden Sie diesen Namespace
using System.Diagnostics;
Wenn Sie eine Schaltfläche erstellen möchten, um ein aktives Fenster zu erhalten.
privatevoid button1_Click(object sender,EventArgs e){Process currentp =Process.GetCurrentProcess();TextBox1.Text= currentp.MainWindowTitle;//this textbox will be filled with active window.}
Antworten:
Ein Beispiel dafür, wie Sie dies mit vollständigem Quellcode tun können, finden Sie hier:
http://www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c/
Bearbeitet mit @ Doug McClean Kommentaren für eine bessere Korrektheit.
quelle
using System.Runtime.InteropServices;
und wo die DLL-Import- und statischen externen Zeilen abgelegt werden sollen. Einfügen in die KlasseWenn Sie über WPF gesprochen haben, verwenden Sie:
quelle
Schleife vorbei
Application.Current.Windows[]
und finde den mitIsActive == true
.quelle
Verwenden Sie die Windows-API. Rufen Sie an
GetForegroundWindow()
.GetForegroundWindow()
gibt Ihnen ein Handle (benannthWnd
) für das aktive Fenster.Dokumentation: GetForegroundWindow-Funktion | Microsoft Docs
quelle
Basierend auf der GetForegroundWindow-Funktion | Microsoft Docs :
Es unterstützt UTF8-Zeichen.
quelle
Wenn es passiert, dass Sie die brauchen aktuelle aktive Formular aus Ihrer MDI-Anwendung: (MDI-Multi Document Interface).
quelle
Sie können Prozessklasse verwenden, es ist sehr einfach. Verwenden Sie diesen Namespace
Wenn Sie eine Schaltfläche erstellen möchten, um ein aktives Fenster zu erhalten.
quelle