WinApi FindWindow по части заголовка - PullRequest
2 голосов
/ 30 октября 2011

Как я могу получить дескриптор окна, если знаю только часть его заголовка и его className?

Ответы [ 2 ]

5 голосов
/ 30 октября 2011

FindWindow() требуется полное название. Используйте EnumWindows() или GetWindow() в цикле, чтобы перечислить все доступные окна, вызывая GetClassName() и GetWindowText() в каждом из них и сравнивая значения с критериями поиска, пока не найдете совпадение.

2 голосов
/ 30 октября 2011

Примерно так:

BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lParam ) {
  wchar_t   lpClassName[128] = {0};
  MYSTRUCT* MS_INFO          = ( MYSTRUCT* )lParam;

  GetClassName( hwnd, lpClassName, _countof( lpClassName ) );
  if( strstr( lpClassName, MS_INFO -> lpClassName ) ) {
    wchar_t lpWindowName[128] = {0};
    GetWindowText( hwnd, lpWindowName, _countof( lpWindowName ) );

    if( strstr( lpWindowName, MS_INFO -> lpWindowName ) ) {
      ...
    }
  }
}
...