Cara mendapatkan pegangan jendela konsol (HWND)

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 124103
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Mungkin berguna untuk memanipulasi sebuah jendela yang terkait dengan konsol aplikasi. Win32 API menyediakan metode tidak langsung untuk mendapatkan jendela menangani terkait dengan aplikasi konsol. Namun, Anda dapat memperoleh menangani jendela dengan menelepon FindWindow(). Fungsi ini mengambil jendela menangani berdasarkan nama kelas atau jendela nama.

Hubungi GetConsoleTitle() untuk menentukan judul konsol saat ini. Kemudian pasokan judul konsol saat ini untuk FindWindow().

INFORMASI LEBIH LANJUT

Karena windows beberapa mungkin memiliki judul yang sama, Anda harus mengubah saat ini konsol judul window untuk gelar yang unik. Ini akan membantu mencegah jendela salah menangani dari sedang kembali. Menggunakan SetConsoleTitle() untuk mengubah judul jendela konsol saat ini. Berikut adalah proses:
  1. Hubungi GetConsoleTitle() untuk menyimpan judul jendela konsol saat ini.
  2. Hubungi SetConsoleTitle() untuk mengubah judul konsol untuk gelar yang unik.
  3. Panggilan Sleep(40) untuk memastikan judul window diperbarui.
  4. Call FindWindow (NULL, uniquetitle), untuk mendapatkan HWND panggilan ini kembali HWND--atau NULL jika operasi gagal.
  5. Panggilan SetConsoleTitle() dengan nilai yang Diperoleh dari langkah 1, untuk memulihkan jendela judul asli.
Anda harus menguji HWND dihasilkan. Sebagai contoh, Anda dapat menguji untuk melihat apakah kembali HWND sesuai dengan proses saat ini dengan menelepon GetWindowText() di HWND dan membandingkan hasilnya dengan GetConsoleTitle().

HWND dihasilkan tidak dijamin akan cocok untuk semua jendela menangani operasi.

Contoh kode

Fungsi berikut mengambil jendela aplikasi konsol saat ini menangani (HWND). Jika fungsi berhasil, nilai kembali adalah pegangan jendela konsol. Jika fungsi gagal, nilai kembali adalah NULL. Beberapa pengecekan error 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);
   }
				

Properti

ID Artikel: 124103 - Kajian Terakhir: 14 September 2011 - Revisi: 2.0
Kata kunci: 
kbhowto kbwndw kbmt KB124103 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:124103

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com