Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengenalpasti dan Menyenaraikan Semua Windows Kepunyaan Proses Tertentu Menggunakan C#?
Mengenal pasti dan Menghitung Windows Proses Tertentu Menggunakan .NET
Mencari semua tetingkap yang dicipta oleh proses tertentu boleh menjadi tugas yang berharga untuk pelbagai tujuan. Menggunakan C#, ini boleh dicapai dengan cekap dengan memanfaatkan fungsi EnumThreadWindows.
Untuk memulakan, dapatkan ID proses (PID) aplikasi yang anda ingin senaraikan tetingkapnya. Seterusnya, panggil EnumThreadWindows untuk setiap utas kepunyaan proses. Fungsi ini menerima perwakilan panggil balik yang mengambil pemegang tetingkap sebagai parameter dan mengembalikan benar jika penghitungan harus diteruskan. Dalam perwakilan ini, tambahkan pemegang pada koleksi.
Berikut ialah kod C# untuk menghitung semua tetingkap kepunyaan proses:
delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam); [DllImport("user32.dll")] static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn, IntPtr lParam); static IEnumerable<IntPtr> EnumerateProcessWindowHandles(int processId) { var handles = new List<IntPtr>(); foreach (ProcessThread thread in Process.GetProcessById(processId).Threads) EnumThreadWindows(thread.Id, (hWnd, lParam) => { handles.Add(hWnd); return true; }, IntPtr.Zero); return handles; }
Untuk menunjukkan penggunaannya, berikut ialah contoh kod yang menyenaraikan tetingkap proses explorer dan memaparkan tajuknya:
private const uint WM_GETTEXT = 0x000D; [DllImport("user32.dll", CharSet = CharSet.Auto)] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam); [STAThread] static void Main(string[] args) { foreach (var handle in EnumerateProcessWindowHandles( Process.GetProcessesByName("explorer").First().Id)) { StringBuilder message = new StringBuilder(1000); SendMessage(handle, WM_GETTEXT, message.Capacity, message); Console.WriteLine(message); } }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengenalpasti dan Menyenaraikan Semua Windows Kepunyaan Proses Tertentu Menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!