Apakah Anda mencoba menentukan jendela mana dalam aplikasi Anda yang memiliki fokus atau jendela aplikasi mana yang memiliki fokus?
Peder Rice
ini relevan stackoverflow.com/questions/2423234/… jadi jika Anda ingin mengklik tombol untuk melakukannya, sebaiknya pastikan formulir Anda tidak fokus.
barlop
Jawaban:
165
Lihat contoh bagaimana Anda dapat melakukan ini dengan kode sumber lengkap di sini:
catatan newb, untuk menjalankannya, using System.Runtime.InteropServices; dan kembali ke mana harus meletakkan impor dll dan garis eksternal statis. menempelkannya di dalam kelas
barlop
1
@smink Bagaimana cara mendapatkan jendela latar depan yang aktif untuk pengguna tertentu (katakanlah proses berjalan sebagai layanan).
Jika seluruh aplikasi tidak aktif (program lain memiliki fokus), maka tidak ada jendela yang akan mengatur IsActive ke true.
Todd
Sebenarnya itu bisa salah, dalam kasus saya, saya mencoba mengakses array Window pada utas non-UI. Namun, lihat juga ini jika saya masih benar: social.msdn.microsoft.com/Forums/vstudio/en-US/…
Todd
4
Ulangi Application.Current.Windows[]dan temukan yang dengan IsActive == true.
Bukankah ini hanya berfungsi untuk jendela di aplikasi .Net saat ini? Saya rasa d4nt ingin mendapatkan judul dari jendela aktif saat ini di desktop, tidak peduli aplikasi apa yang dimilikinya.
Quagmire
3
Gunakan API Windows. Panggil GetForegroundWindow().
GetForegroundWindow()akan memberi Anda pegangan (bernama hWnd) ke jendela aktif.
Anda dapat menggunakan kelas proses dengan sangat mudah. gunakan namespace ini
using System.Diagnostics;
jika Anda ingin membuat tombol untuk mendapatkan jendela aktif.
privatevoid button1_Click(object sender,EventArgs e){Process currentp =Process.GetCurrentProcess();TextBox1.Text= currentp.MainWindowTitle;//this textbox will be filled with active window.}
Jawaban:
Lihat contoh bagaimana Anda dapat melakukan ini dengan kode sumber lengkap di sini:
http://www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c/
Diedit dengan komentar @Doug McClean untuk kebenaran yang lebih baik.
sumber
using System.Runtime.InteropServices;
dan kembali ke mana harus meletakkan impor dll dan garis eksternal statis. menempelkannya di dalam kelasJika Anda berbicara tentang WPF, gunakan:
sumber
Ulangi
Application.Current.Windows[]
dan temukan yang denganIsActive == true
.sumber
Gunakan API Windows. Panggil
GetForegroundWindow()
.GetForegroundWindow()
akan memberi Anda pegangan (bernamahWnd
) ke jendela aktif.Dokumentasi: Fungsi GetForegroundWindow | Microsoft Docs
sumber
Berdasarkan fungsi GetForegroundWindow | Microsoft Docs :
Ini mendukung karakter UTF8.
sumber
Jika ternyata Anda memerlukan Formulir Aktif Saat Ini dari aplikasi MDI Anda : (MDI- Multi Document Interface).
sumber
Anda dapat menggunakan kelas proses dengan sangat mudah. gunakan namespace ini
jika Anda ingin membuat tombol untuk mendapatkan jendela aktif.
sumber