Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
1

GetWindowTextW показывает ? вместо вайд чаров

05.10.2017, 11:58. Показов 1059. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При использовании GetWindowTextW, не могу получить название окон с русскими, скажем, буквами.

Как использую:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure someProc();
var
  // ...
  foregroundWindow: HWND;
  foregroundWindowTitle: array[0..255] of WideChar;   
  // ...
begin
  // ...
  foregroundWindow := GetForegroundWindow();
  GetWindowTextW(foregroundWindow, @foregroundWindowTitle[0], 256); 
  
  MyForm.Caption := foregroundWindowTitle;
  // ...
end;
В итоге, все нормально с буквами из английского алфавита, но русские буквы заменяются на знаки вопроса (?).

Почему такое может быть и как это исправить?

Добавлено через 5 минут
Хмм, сейчас буквально игрался с кодом, вот это помогло:

Delphi
1
2
3
4
5
6
7
8
9
10
var
  //..
  foregroundWindowTitle: wideString;  
  //..
begin
  //..
  SetLength(foregroundWindowTitle, 256);
  GetWindowTextW(foregroundWindow, @foregroundWindowTitle[1], 256);
  //..
end;
Почему же мой первый вариант не работал?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2017, 11:58
Ответы с готовыми решениями:

GetWindowTextW
Только начал изучать WinAPI, как сразу же столкнулся с такой проблемой: #include <iostream>...

Вместо 4Гб показывает 3.5Гб
Было у меня 2.43 памяти купил тоже Kingston тоже на 2гб ещё одну и каким то образом стало не 4гб а...

DBGrid Показывает 2 строки вместо одной
Здравствуйте программисты у меня такой вопрос есть база данных и в ней есть две таблицы aqua_h и...

В Биосе вместо 3.3в показывает красным 2.768в
В Биосе заместь 3.3в показывает красним 2.768в Опасно ето или нет...

1
Джоуи
1082 / 644 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
05.10.2017, 22:10 2
http://wiki.freepascal.org/WideChar
WideChar - 2 байта, "обычно хранит 1 юникод-символ в кодировке UTF-16".
Может, проблема в том, что GetWindowTextW работает с кодировкой UTF-8?
0
05.10.2017, 22:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2017, 22:10
Помогаю со студенческими работами здесь

Вместо одного ядра показывает два.
Проц всю жизнь был одноклеточным, но по какимто сверхестественым событиям стал показывать два ядра....

Вместо таблицы показывает код php
Всем доброго дня, столкнулся с такой проблемной. Есть главная страница index.html, и table.php. В...

В строке вместо названия показывает какое-то число
В строке вместо названия (nazvanie в моей программе) показывает какое-то число, вместо слов...

Prolog. Вместо значений списка показывает _цифры
Не могу разобраться, где косяк. Вместо того, чтобы показать значения списка, почему-то показывает...

В папке изображения вместо фото показывает символы
В папке изображения вместо фотографий показывает вопросительные знаки. Что случилось. ...

Вместо детальной страницы новости показывает главную страницу
Файл urlrewrite.php: <?php $arUrlRewrite=array ( 1 => array ( 'CONDITION' =>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru