Получение дескриптора окна (HWND) консоли

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:124103
Аннотация
Может оказаться полезным для управления окном, связанный с консолиприложения. Win32 API предоставляет прямого способа получениядескриптор окна, связанный с консольного приложения. Тем не менее можноПолучение дескриптора окна путем вызова FindWindow(). Эта функция получаетдескриптор окна, на основе имени класса или имя окна.

Вызовите GetConsoleTitle(), чтобы определить текущий заголовок консоли. Затем укажитетекущий заголовок консоли для FindWindow().
Дополнительная информация
Поскольку несколько окон могут иметь одинаковое название, изменениетекущий заголовок окна консоли для уникальное название. Это поможет предотвратитьНеправильный дескриптор из возвращаемых. Изменить с помощью SetConsoleTitle()текущий заголовок окна консоли. Вот как это делается:
  1. Вызовите GetConsoleTitle(), чтобы сохранить текущий заголовок окна консоли.
  2. Вызовите SetConsoleTitle(), чтобы изменить заголовок консоли, уникальное название.
  3. Вызовите Sleep(40), чтобы гарантировать заголовок окна был обновлен.
  4. Вызовите FindWindow (NULL, uniquetitle), чтобы получить HWND Этот вызов возвращает HWND--или значение NULL, если операция не выполнена.
  5. Значение, полученное на шаге 1, чтобы для вызова SetConsoleTitle() Восстановите исходный заголовок окна.
Следует протестировать полученный HWND. Например, можно проверить на наличиеВозвращаемый HWND соответствует текущим процессом путем вызова методаGetWindowText() на HWND и сравнение результатов с помощьюGetConsoleTitle().

Результирующая HWND не обязательно подходит для всех дескриптор окнаоперации.

Пример кода

Следующая функция извлекает текущего окна приложения консолидескриптор (HWND). Если функция успешно выполнена, возвращается дескрипторв окне консоли. Если операция завершается ошибкой, возвращается значение NULL. НекоторыеПроверка ошибок опущен, для краткости.
   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);   }				

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 124103 — последний просмотр: 06/01/2011 09:13:00 — редакция: 4.0

  • kbhowto kbwndw kbmt KB124103 KbMtru
Отзывы и предложения