Как использовать autoit в языке С++

326
23 ноября 2017, 04:01

Autoit невероятно удобная штука, но с С++ работать мне проще. Знаю, что Autoit написан на С. Возможно ли функционал Autoit использовать в C++? Как подключить к Visual Studio?

Answer 1

Для использования Autoit из C++ есть библиотека AutoItX (идет в составе дистрибутива AutoIT).

Цитата из справки:

AutoItX представляет собой DLL версию модуля AutoIt v3, которая обеспечивает набор функций по AutoIt через ActiveX / COM и DLL интерфейс. Это означает, что вы можете добавить AutoIt-подобные функции в ваш любимый скриптовый язык, и языки программирования, например, VB, VBScript, Delphi, C, C + +, KiXtart, и в большинстве других языков, которые поддерживают использование библиотек (DLL).

Оригинальная версия AutoIt поставлялась с двумя управляющими элементами: AutoItX (COM / ActiveX Control) и AutoItDLL (управление DLL). В этой новой версии как COM так и DLL версии были объединены в одно управление AutoItX, который обеспечивает оба метода доступа.

То как вы будете использовать AutoItX зависит от среды разработки (языка) в который вы хотите его использовать. Если вы используете нечто поддерживающее доступ к COM-объектам (например, VBScript), то использование AutoItX в качестве управления COM весьма рекомендуется. Если вы хотите использовать AutoItX из таких языков как С, то использовать его в качестве DLL будет проще.

Как подключить к Visual Studio:

  1. start a new project2. go to your Autoit directory (usually C:\Program Files\AutoIt\ )

  2. go to the AutoItX/StandardDLL/VC6/Example folder within your Autoit directory

  3. copy the following files to your project directory: AutoIt3.h AutoItX3.lib AutoItX3.dll main.cpp

  4. in visual studio, go to Project->Add To Project->Files

  5. change the "Files of type" dropdown to "all files"

  6. Select: AutoIt3.h AutoItX3.lib and main.cpp and add them to the project

  7. Your project should now compile and run. the example opens notepad and sends some text to it.

Также в дистрибутиве рядом с dll лежит простейший пример для C++:

#include <Windows.h>
#include "AutoItX3_DLL.h"
int APIENTRY wWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
    // You can now call AutoIt commands, e.g. to send the keystrokes "hello"
    AU3_Sleep(1000);
    AU3_Run(L"notepad.exe", L"", 1);
    AU3_WinWaitActive(L"Untitled -", L"", 0);
    AU3_Send(L"Hello{!}", 0);
    // Get the text in the status bar
    //WCHAR szText[1000];
    //AU3_StatusbarGetText("Untitled -", "", 2, szText, 1000);
    //MessageBox(NULL, szText, "Text:", MB_OK);
    return 0;
}
Answer 2

Когда-то давно мне понадобился язык сценариев для использования в своих приложениях. Тогда еще не было никаких Питонов и Луа, не говоря уже об Autoit. Пришлось написать свой интерпретатор языка Basic. Время шло, вышло несколько версий проекта. Сейчас этот проект называется Open Basic и он выложен в исходных кодах на:

https://sourceforge.net/projects/obasic/?source=frontpage&position=1.

Интерпретатор представляет собой класс в смысле класса С++ и написан целиком на С++, поэтому включается в любой С++ проект без всяких dll и COM-объектов. К исполняющей системе интерпретатора можно подключать пользовательские С++ функции с параметрами и вызывать их из текста Basic-программы. Там по ссылке есть и описание на русском языке.

UPD1:

Не является ответом на вопрос. Чтобы оставить свои замечания или попросить у автора внести уточнения, оставьте комментарий к соответствующему сообщению.

Ну почему же не является? Человек спрашивает:

Возможно ли функционал Autoit использовать в C++?

Есть куча других методов, чтобы получить функционал скриптового языка в своей программе. Кроме того, на вашем сайте в том поле которое у вас называется комментарием, невозможно вставить ссылку. Поэтому и приходится писать в том поле, которое у вас называется ответом.

UPD2:

И вообще, такое впечатление, что посетители stackoverflow занимаются не программированием, а поиском "нарушений правил" сайта stackoverflow. Поиск "нарушений правил" явно превратилось в навязчивую идею местных аборигенов. Ребята, вам с такими комплексами в ГИБДД надо работать, там ценится умение докопаться до любого столба. :-)

READ ALSO
Как обнаружить ошибку при вводе из istream_iterator&lt;int&gt;

Как обнаружить ошибку при вводе из istream_iterator<int>

Хочу заполнить вектор со стандартного потока ввода cin с использованием std::istream_iteratorЕсть такой код:

288
Inline функции в C и С++

Inline функции в C и С++

В чем разница inline функций в C и C++? Желательно со ссылкой на стандарт

441
Изменение размера map

Изменение размера map

Мяч находится на игровом поле m на n в ячейке (i, j), его можно передвигать Найдите количество возможных путей вывода мяча за пределы игрового...

301
Скриншот рабочего стола Windows при отсутствии залогиненного пользователя (С++)

Скриншот рабочего стола Windows при отсутствии залогиненного пользователя (С++)

На удалённом сервере запущена программа, деятельность которой хочется мониторить через централизованную систему наблюденияВместе с ней...

289