Что нового

Что есть ActiveX/COM (AutoItX)?

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Что это и с чем его едят :smile:

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

В связи с тем что AutoItX предоставляет определенные функции AutoIt v3, вам следует прочитать файл справки для AutoIt v3 и ознакомиться с основными понятиями, такими как:

AutoIt Window Info Tool
Windows
Controls

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

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

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
Поправил первое сообщение добавив описание.
 
Автор
A

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
О! Тогда ясно почему на всех форумах эта ветка пустая. ;D
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Archy26 сказал(а):
О! Тогда ясно почему на всех форумах эта ветка пустая. ;D
Просто намного проще использовать AutoIt в "чистом виде" нежели, например VBScript + AutoItX. Я раньше использовал VBScript, но раздражало отсутствие графического интерфейса. Попробывал AutoItX, плюнул на все это хозяйство и перешел на AutoIt.

:smile:

А вообще, эта ветка на всех форумах на последнем месте.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 573
Репутация
933
Это типо мы в каком нибудь другом языке при помощи аналога команды DLLCall пишем запрос в AutoItX.dll на команду аналогичную какой-нибудь стандартной команде AutoIt и получаем результат аналогичный стандартной работе автоита?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
Belfigor « Ответ #4, Отправлен: Сегодня в 05:14:34 »
при помощи аналога команды DLLCall
Не совсем, это делается с использованием COM-объектов.

Например используется на системе без AutoIt'а - даём пользователю один лишь файл AutoItX3.dll, и VBS-скрипт на выполнение:

Код:
On Error Resume Next


'================== AutoItX3.Control Object Check & Register ==================
Set oShell = WScript.CreateObject("WScript.Shell")
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")

If Not IsObject(oAutoIt) Then
	AutoItX3_dll = ".\AutoItX3.dll"
	
	If Not oFS.FileExists(AutoItX3_dll) Then
		MsgBox "AutoItX3.dll Not found." & vbCRLF & vbCRLF & "OK ==> EXIT", 16, "Error"
		WScript.Quit 0
	End If
	
	oShell.Exec "regsvr32.exe /S " & oFS.GetFile(AutoItX3_dll).Path
	
	Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
	
	If Not IsObject(oAutoIt) Then
		MsgBox "Can not register the AutoItX3.Control object." & vbCRLF & vbCRLF & "OK ==> EXIT", 16, "Error"
		WScript.Quit 0
	End If
End If
'================== AutoItX3.Control Object Check & Register ==================


'....Script content starts here....

'================================ Run Opera browser as minimized window ================================

'Opera Title (Тут после "REGEXPTITLE:" можно подставить заголовок или его часть, поддерживаются регулярные выражения)
sTitle = "[CLASS:OpWindow;REGEXPTITLE:(?i).*- Opera.*?]"

'Opera path
sOpPath = oAutoIt.ScriptDir
sOpExe = "Opera.exe"

'Run Opera
If oAutoIt.ProcessExists(sOpExe) = 0 Then
	iPID = oAutoIt.Run(sOperaPath & "\" & sOpExe)
Else
	oAutoIt.WinActivate sTitle 'Just to demonstrate the SW_MINIMIZE effect
End If

'Wait window to show
oAutoIt.Opt "WinWaitDelay", 0
oAutoIt.WinWait sTitle, "", 10

'Set window state
oAutoIt.WinSetState sTitle, "", oAutoIt.SW_MINIMIZE

'================================ Script Part ================================
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 573
Репутация
933
Хе, спасибо, примерно понял о чем речь, полезная в принципе вещь, но действительно не очень актуальная по причине той что можно просто установить автоит :smile:
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
А где скачать можно подобное чудо? Надо вот применить внутри проекта на vba.net.
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
Точно... Сейчас посмотрел... :IL_AutoIt_1:
 

soulmonger

Новичок
Сообщения
11
Репутация
0
Задача: сделать программу(на каком-то языке), которая бы брала файл с исходником скрипта Autoit и выполняла бы его. Иными словами, нужно встроить в программу интерпретатор автоита. Возможно ли сделать это средствами AutoItX?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
soulmonger
для этого нужно скомпилировать скрипт AutoIt средствами самого AutoIt. Тогда на выходе получится exe-файл, который можно будет запускать на машинах без установленного интерпретатора, т.к. exe-файл является solid-файлом, который помимо самого скрипта будет содержать и интерпретатор и все подключаемые библиотеки.

PS:
2Moderators
последние два поста имеет смысл перенести в отдельную тему в раздел для новичков
 

hikki

Продвинутый
Сообщения
233
Репутация
99
soulmonger сказал(а):
Задача: сделать программу(на каком-то языке), которая бы брала файл с исходником скрипта Autoit и выполняла бы его. Иными словами, нужно встроить в программу интерпретатор автоита. Возможно ли сделать это средствами AutoItX?
http://autoit-script.ru/index.php?topic=1911.0 вот в этой теме разобрано то что тебе нужно.
ЗЫ и действительно, перенестибы эти последние посты отсюда.
 

GreyBear

Новичок
Сообщения
2
Репутация
0
как через Com/ActiveX вызвать макрос?
вариант:
Код:
// JScript
var objAutoIt = WScript.CreateObject("AutoItX3.Control")
WScript.Echo(objAutoIt.KBLayout)
возвращает "undefined"
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
GreyBear [?]
тем не менее в скриптах самого AutoIt этот макрос работает
А кто сказал что не работает?
В AutoItX оно не поддерживается, как и многие другие функции из AutoIt.
 
Верх