Mendapatkan semula Pemegang Tetingkap Utama daripada ID Proses menggunakan EnumWindows()
Dalam pelbagai senario, adalah perlu untuk mendapatkan semula pemegang tetingkap utama yang dikaitkan dengan ID proses tertentu. Ini membolehkan anda memanipulasi gelagat tetingkap, seperti membawanya ke hadapan atau berinteraksi dengan kawalannya.
Sama seperti pendekatan yang digunakan oleh rangka kerja .NET, anda boleh memanfaatkan fungsi EnumWindows() untuk mencapai ini . Begini cara anda boleh melaksanakannya:
Pelaksanaan dalam C/C :
struct handle_data { unsigned long process_id; HWND window_handle; }; HWND find_main_window(unsigned long process_id) { handle_data data; data.process_id = process_id; data.window_handle = 0; EnumWindows(enum_windows_callback, (LPARAM)&data); return data.window_handle; } BOOL CALLBACK enum_windows_callback(HWND handle, LPARAM lParam) { handle_data& data = *(handle_data*)lParam; unsigned long process_id = 0; GetWindowThreadProcessId(handle, &process_id); if (data.process_id != process_id || !is_main_window(handle)) { return TRUE; } data.window_handle = handle; return FALSE; } BOOL is_main_window(HWND handle) { return GetWindow(handle, GW_OWNER) == (HWND)0 && IsWindowVisible(handle); }
Kod ini mentakrifkan struct pembantu, handle_data, untuk menyimpan kedua-dua ID proses dan pemegang tingkap. Fungsi find_main_window() menggunakan EnumWindows() untuk menghitung semua tetingkap peringkat atas, menyemak ID proses yang dikaitkan dengan setiap tetingkap dan menapis keluar tetingkap yang bukan tetingkap utama menggunakan fungsi is_main_window(). Jika tetingkap utama ditemui, kod menyimpan pemegangnya dalam struct handle_data dan mengembalikannya.
Dengan mengikuti pendekatan ini, anda boleh mendapatkan semula pemegang tetingkap utama daripada ID proses, membolehkan anda mengawal penampilannya atau tingkah laku mengikut keperluan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Pemegang Tetingkap Utama daripada ID Prosesnya menggunakan EnumWindows()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!