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

Переводы статьи Переводы статьи
Код статьи: 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 - Последний отзыв: 1 июня 2011 г. - Revision: 4.0
Ключевые слова: 
kbhowto kbwndw kbmt KB124103 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:124103

Отправить отзыв

 

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