| Назад: 11.3 Использование библиотеки распознавания текста (OCR) | Содержание | Дальше: 11.5 Вызов функций из .NET сборок |
Вызов функций из DLL
Вызов DLL-функций в TestComplete – процесс сложный. Мы рассмотрим самый простой пример: функция LockWorkStation из файла user32.dll, которая блокирует компьютер.
В общем случае, для того, чтобы вызвать функцию из DLL, необходимо выполнить следующие действия:
- Определить тип DLL
- Описать параметры типов данных
- Описать функцию, которую мы вызываем
- Заполнить структуры данных передаваемых параметров
- Загрузить DLL в память
- Вызвать описанную функцию
В нашем примере функция LockWorkStation не принимает никаких параметров, что существенно упрощает задачу. Ниже показан пример вызова этой DLL-функции.
function TestDLL()
{
// определяем новый тип DLL
user32dll = DLL.DefineDLL(“MyDLL”);
// описываем вызываемую функцию
// последний параметр – возвращаемое значение, должен быть указан обязательно
// в нашем случае функция не возвращает никакого значения, поэтому
// указан тип vt_void
proc = user32dll.DefineProc(“LockWorkStation”, vt_void);
// загружаем DLL в память, связывая имя DLL-файла с созданным ранее типом DLL
lib = DLL.Load(“C:\\Windows\\System32\\USER32.DLL”, “MyDLL”);
// вызываем функцию
lib.LockWorkStation();
}
Подробнее о вызове функций из DLL можно прочитать в справочной системе TestComplete, раздел How to Call a DLL Routine From Your Script.
Вызов API-функций
Для вызова API-функций в TestComplete существует объект Win32API. С его помощью можно вызывать API-функции, общие для всех версий Windows начиная с версии 2000 и выше. Объект Win32API не поддерживает специфические функции для определенных платформ.
Кроме того, так как Microsoft OLE не поддерживает указатели, в TestComplete нет возможности вызывать API-функции, которые работают с указателями, принимая их в качестве параматров или возвращая указатели (например, ShellExecute).
Пример вызова API-функции:
function TestWinAPI()
{
var res = Win32API.GetCommandLine();
Log.Message(res);
}
Этот пример выведет в лог TestComplete-а значение «C:\Program Files\Automated QA\TestComplete 7\Bin\TestComplete.exe».
При вызове API-функций таким образом, обращение Win32API можно не указывать. Таким образом, следующий пример будет работать так же, как и предыдущий.
function TestWinAPI()
{
var res = GetCommandLine();
Log.Message(res);
}
| Назад: 11.3 Использование библиотеки распознавания текста (OCR) | Содержание | Дальше: 11.5 Вызов функций из .NET сборок |