Что нового

Что есть 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,671
Репутация
2,481
Поправил первое сообщение добавив описание.
 
Автор
A

Archy26

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Archy26 сказал(а):
О! Тогда ясно почему на всех форумах эта ветка пустая. ;D

Просто намного проще использовать AutoIt в "чистом виде" нежели, например VBScript + AutoItX. Я раньше использовал VBScript, но раздражало отсутствие графического интерфейса. Попробывал AutoItX, плюнул на все это хозяйство и перешел на AutoIt.

:smile:

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

Belfigor

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

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
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,608
Репутация
941
Хе, спасибо, примерно понял о чем речь, полезная в принципе вещь, но действительно не очень актуальная по причине той что можно просто установить автоит :smile:
 

vcomp71

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

vcomp71

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

soulmonger

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

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
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,671
Репутация
2,481
GreyBear [?]
тем не менее в скриптах самого AutoIt этот макрос работает
А кто сказал что не работает?
В AutoItX оно не поддерживается, как и многие другие функции из AutoIt.
 
Верх