Используйте версию FindWindow для Unicode (wide) и используйте для поиска широкие строки. Я также рекомендую сохранить исходный код в кодировке UTF-8 и использовать переключатель компилятора /utf-8
для компилятора Microsoft; в противном случае компилятор примет локализованную кодировку ANSI для интерпретации широкой строки. Это нормально, если вы локализовали кодировку в китайском варианте, но если вы используете версию * 1013 для США или Западной Европы *, Microsoft IDE, вероятно, предложит вам сохранить в UTF-16, если вы используете китайские символы в строке константы:
Пример:
#include <windows.h>
#include <stdio.h>
int main(void)
{
//HWND h = FindWindowW(NULL,L"马克"); // works if saved in UTF-8 encoding
// // and compiled with /utf-8.
HWND h = FindWindowW(NULL,L"\u9a6c\u514b");
if(h == NULL)
printf("err = %ld\n",GetLastError());
else
printf("handle = %p\n",h);
}
Вкл. Windows Я изменил окно терминала на соответствующий заголовок китайского языка с title 马克
, и этот код нашел окно:
C:\>title 马克
C:\>test
handle = 00000000000B0258
C:\>test
handle = 00000000000B0258
Инструмент Microsoft Spy ++ подтверждает дескриптор: