Cara mendapatkan gagang jendela konsol (HWND)

Ringkasan

Mungkin berguna untuk memanipulasi jendela yang terkait dengan aplikasi konsol. API Win32 tidak menyediakan metode langsung untuk mendapatkan gagang jendela yang terkait dengan aplikasi konsol. Namun, Anda bisa mendapatkan gagang jendela dengan memanggil FindWindow (). Fungsi ini mengambil gagang jendela berdasarkan nama kelas atau nama jendela. Panggil GetConsoleTitle () untuk menentukan judul konsol saat ini. Lalu sediakan judul konsol saat ini ke FindWindow ().

Informasi Selengkapnya

Karena beberapa jendela mungkin memiliki judul yang sama, Anda harus mengubah judul jendela konsol saat ini ke judul yang unik. Ini akan membantu mencegah gagang jendela tidak dikembalikan. Gunakan SetConsoleTitle () untuk mengubah judul jendela konsol saat ini. Berikut adalah prosesnya:

  1. Panggil GetConsoleTitle () untuk menyimpan judul jendela konsol saat ini.

  2. Panggil SetConsoleTitle () untuk mengubah judul konsol menjadi judul yang unik.

  3. Panggil tidur (40) untuk memastikan judul jendela diperbarui.

  4. Panggil FindWindow (NULL, uniquetitle), untuk mendapatkan HWND panggilan ini mengembalikan HWND--atau NULL jika operasi gagal.

  5. Panggil SetConsoleTitle () dengan nilai yang diambil dari langkah 1, untuk memulihkan judul jendela asli.

Anda harus menguji HWND yang dihasilkan. Misalnya, Anda bisa menguji untuk melihat apakah HWND yang dikembalikan sesuai dengan proses saat ini dengan memanggil GetWindowText () di HWND dan membandingkan hasilnya dengan GetConsoleTitle (). HWND yang dihasilkan tidak dijamin sesuai untuk semua operasi gagang jendela.

Kode sampel

Fungsi berikut ini mengambil handle jendela aplikasi konsol saat ini (HWND). Jika fungsi berhasil, nilai yang dikembalikan adalah gagang jendela konsol. Jika fungsi gagal, nilai yang dikembalikan adalah NULL. Beberapa pemeriksaan kesalahan dihilangkan, untuk singkatnya.

   HWND GetConsoleHwnd(void)   {       #define MY_BUFSIZE 1024 // Buffer size for console window titles.       HWND hwndFound;         // This is what is returned to the caller.       char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated                                           // WindowTitle.       char pszOldWindowTitle[MY_BUFSIZE]; // Contains original                                           // WindowTitle.       // Fetch current window title.       GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);       // Format a "unique" NewWindowTitle.       wsprintf(pszNewWindowTitle,"%d/%d",                   GetTickCount(),                   GetCurrentProcessId());       // Change current window title.       SetConsoleTitle(pszNewWindowTitle);       // Ensure window title has been updated.       Sleep(40);       // Look for NewWindowTitle.       hwndFound=FindWindow(NULL, pszNewWindowTitle);       // Restore original window title.       SetConsoleTitle(pszOldWindowTitle);       return(hwndFound);   }

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×