Czy próbowałeś określić, które okno w Twojej aplikacji ma fokus, czy też które okno dowolnej aplikacji ma fokus?
Peder Rice,
to jest istotne stackoverflow.com/questions/2423234/ ... więc jeśli chciałeś kliknąć przycisk, aby to zrobić, warto upewnić się, że twój formularz nie jest aktywny.
Barlop
Odpowiedzi:
165
Zobacz przykład, jak możesz to zrobić z pełnym kodem źródłowym tutaj:
notatka o newb, aby go uruchomić using System.Runtime.InteropServices; i gdzie umieścić import biblioteki DLL i statyczne linie zewnętrzne. wklejanie go w klasie
barlop
1
@smink Jak uzyskać aktywne okno pierwszego planu dla określonego użytkownika (powiedzmy, że proces działa jako usługa).
Jeśli cała aplikacja nie jest aktywna (inny program jest aktywny), żadne okno nie będzie miało ustawienia IsActive na true.
Todd
Właściwie może to być błąd, w moim przypadku próbowałem uzyskać dostęp do tablicy Window w wątku spoza interfejsu użytkownika. Jednak zobacz to również na wypadek, gdyby nadal mam rację: social.msdn.microsoft.com/Forums/vstudio/en-US/…
Todd
4
Zapętl się Application.Current.Windows[]i znajdź ten z IsActive == true.
Czy nie działałoby to tylko w przypadku okien w bieżącej aplikacji .Net? Myślę, że d4nt chce uzyskać tytuł bieżącego aktywnego okna na pulpicie, bez względu na to, do jakiej aplikacji należy.
Quagmire
3
Użyj interfejsu API systemu Windows. Zadzwoń GetForegroundWindow().
GetForegroundWindow()da ci uchwyt (nazwany hWnd) do aktywnego okna.
możesz użyć klasy procesu, to bardzo proste. użyj tej przestrzeni nazw
using System.Diagnostics;
jeśli chcesz utworzyć przycisk, aby uaktywnić okno.
privatevoid button1_Click(object sender,EventArgs e){Process currentp =Process.GetCurrentProcess();TextBox1.Text= currentp.MainWindowTitle;//this textbox will be filled with active window.}
Odpowiedzi:
Zobacz przykład, jak możesz to zrobić z pełnym kodem źródłowym tutaj:
http://www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c/
Edytowane z komentarzami @Doug McClean dla lepszej poprawności.
źródło
using System.Runtime.InteropServices;
i gdzie umieścić import biblioteki DLL i statyczne linie zewnętrzne. wklejanie go w klasieJeśli mówiłeś o WPF, użyj:
źródło
Zapętl się
Application.Current.Windows[]
i znajdź ten zIsActive == true
.źródło
Użyj interfejsu API systemu Windows. Zadzwoń
GetForegroundWindow()
.GetForegroundWindow()
da ci uchwyt (nazwanyhWnd
) do aktywnego okna.Dokumentacja: funkcja GetForegroundWindow | Dokumenty Microsoft
źródło
Oparty na funkcji GetForegroundWindow | Dokumenty Microsoft :
Obsługuje znaki UTF8.
źródło
Jeśli zdarzy się, że potrzebujesz aktualnego aktywnego formularza z aplikacji MDI : (MDI- Multi Document Interface).
źródło
możesz użyć klasy procesu, to bardzo proste. użyj tej przestrzeni nazw
jeśli chcesz utworzyć przycisk, aby uaktywnić okno.
źródło