#cpp #autoit
Autoit невероятно удобная штука, но с С++ работать мне проще. Знаю, что Autoit написан на С. Возможно ли функционал Autoit использовать в C++? Как подключить к Visual Studio?
Ответы
Ответ 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: start a new project2. go to your Autoit directory (usually C:\Program Files\AutoIt\ ) go to the AutoItX/StandardDLL/VC6/Example folder within your Autoit directory copy the following files to your project directory: AutoIt3.h AutoItX3.lib AutoItX3.dll main.cpp in visual studio, go to Project->Add To Project->Files change the "Files of type" dropdown to "all files" Select: AutoIt3.h AutoItX3.lib and main.cpp and add them to the project Your project should now compile and run. the example opens notepad and sends some text to it. Также в дистрибутиве рядом с dll лежит простейший пример для C++: #include#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; } Ответ 2
Когда-то давно мне понадобился язык сценариев для использования в своих приложениях. Тогда еще не было никаких Питонов и Луа, не говоря уже об Autoit. Пришлось написать свой интерпретатор языка Basic. Время шло, вышло несколько версий проекта. Сейчас этот проект называется Open Basic и он выложен в исходных кодах на: https://sourceforge.net/projects/obasic/?source=frontpage&position=1. Интерпретатор представляет собой класс в смысле класса С++ и написан целиком на С++, поэтому включается в любой С++ проект без всяких dll и COM-объектов. К исполняющей системе интерпретатора можно подключать пользовательские С++ функции с параметрами и вызывать их из текста Basic-программы. Там по ссылке есть и описание на русском языке. UPD1: Не является ответом на вопрос. Чтобы оставить свои замечания или попросить у автора внести уточнения, оставьте комментарий к соответствующему сообщению. Ну почему же не является? Человек спрашивает: Возможно ли функционал Autoit использовать в C++? Есть куча других методов, чтобы получить функционал скриптового языка в своей программе. Кроме того, на вашем сайте в том поле которое у вас называется комментарием, невозможно вставить ссылку. Поэтому и приходится писать в том поле, которое у вас называется ответом. UPD2: И вообще, такое впечатление, что посетители stackoverflow занимаются не программированием, а поиском "нарушений правил" сайта stackoverflow. Поиск "нарушений правил" явно превратилось в навязчивую идею местных аборигенов. Ребята, вам с такими комплексами в ГИБДД надо работать, там ценится умение докопаться до любого столба. :-)
Комментариев нет:
Отправить комментарий