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


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


ArCapt = VBA.Left(ArCapt, Res) HandleW = FindWindowW(0&, ArCapt(0)) If HandleW > 0 Then 'OK Debug.Print HandleW Else: MsgBox ("Не могу корректно вызвать UniCode FindWindowW") If Err.LastDllError = ERROR_INVALID_NAME Then Debug.Print "Не корректно задано имя при вызове Unicode FindWindowW функции!" End If End If End Sub

Пример 6.6.

Приведем результаты печати , появившиеся в окне отладки при выполнении этой процедуры:

DocOne6 - Microsoft Word Не корректно задано имя при вызове Unicode FindWindowW функции! Microsoft Visual Basic - DocOne6 [running] - [Unicode (Code)] Не корректно задано имя при вызове Unicode FindWindowW функции!

Прокомментируем теперь работу программы и полученные результаты:

  • Вначале мы попытались найти окно с заведомо существующим заголовком, - окно документа, содержащего тестовые примеры. В процессе работы функции Win32 API FindWindowW возникла ошибка периода выполнения, функция вернула нулевой результат. Ошибка была обработана, и как показывает константа ERROR_INVALID_NAME, причиной является ошибка в задании имени (передаваемый формат в виде массива байтов не годится для цели поиска и сравнения строк), о чем свидетельствует отладочная информация.
  • Далее проводится еще один эксперимент на ту же тему. Для активного окна находится заголовок, используя функцию GetWindowTextW, возвращающую строку в виде массива байтов. Тут же этот массив используется для поиска окна по заголовку. Однако ничего не помогает и снова при поиске окна возникает ошибка. Она обрабатывается, о чем выдается соответствующее сообщение.




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



Книжный магазин