Основы офисного программирования и язык VBA


Вызов функций Win32 API, работающих в Unicode кодировке - часть 3


К сожалению, поиск во всех случаях заканчивался неуспехом, хотя, как показал побайтный анализ в окне Watch и как показывает отладочная печать, массив байтов ArCapt содержит Unicode копию строки заголовка
  • Полученный описатель окна использовался при вызове Unicode варианта функции GetWindowTextW. Функция корректно работала, используя ссылку на переданный ей массив байтов ArCapt.
  • Затем, используя эту же технику, заголовок окна был изменен при вызове Unicode варианта функции SetWindowTextW.
  • Для контроля повторно была вызвана функция GetWindowTextW. Отладочная печать подтвердила корректность работы.
  • Неудача в вызове функции FindWindowW может быть вызвана разными причинами. Вероятнее всего, при выполнении поиска и проведения операций сравнения строк, применяемый способ не корректен, или, по крайней мере, требует дополнительных уточнений, возможно связанных с длиной строки. С другой стороны, сам прием является некоторой уловкой. Существует более честный способ, хотя, возможно, и более трудоемкий. Для решения задачи можно создать библиотеку типов TypeLib, содержащую описание функций Win32 API в Unicode кодировке, включить ссылку на эту библиотеку и вызывать функции без всяких уловок.




    Начало  Назад  Вперед