Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
На оф.форуме нашёл пример как можно написать свой ActiveX компонент без компиляции и создания dll, но ни один пример так и не заработал, чуть - чуть погуглив, пришлось почитать о WSC скриптах, в принципе ни чего сложного нет, можно брать готовый шаблон и добавлять свои функции, вот пример самого компонента:
В данном примере вызывается функция MsgCom и возвращает значение выполнения функции, в случае ошибки вызова компонента предусмотрены функции выше, они вернут код ошибки в AutoIt скрипт, для того чтоб зарегистрировать компонент, достаточно нажать ПКМ на файл и выбрать "Подключить", после этого можно писать AutoIt код:
P.S. Тестировалось на XP, отрабатывает отлично, прозьба протестировать на других системах.
Код:
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<?component error="true" debug="true"?>
<package>
<!--
=====================================AutoIt.Msg===================================
-->
<component id="Example">
<registration progid="AutoIt.Msg" classid="{96AE6C76-AC01-4C05-9A4B-56E46CF1076C}"/>
<public>
<property name="Version"><get/></property>
<property name="LastErrorInfo"><get/></property>
<property name="LastErrorMethod"><get/></property>
<property name="LastErrorReason"><get/></property>
<property name="LastErrorNumber"><get/></property>
<property name="LastErrorDescription"><get/></property>
<property name="LastErrorSource"><get/></property>
<event name="OnError"/>
<method name="MsgCom"><parameter name="MsgCom"/></method>
</public>
<resource id="ver">1.21</resource>
<script language="VBScript"><![CDATA[
' информация о последней произошедшей ошибке
LastErrorInfo = ""
LastErrorMethod = ""
LastErrorReason = ""
LastErrorNumber = ""
LastErrorDescription = ""
LastErrorSource = ""
Sub ClearLastError()
LastErrorInfo = ""
LastErrorMethod = ""
LastErrorReason = ""
LastErrorNumber = ""
LastErrorDescription = ""
LastErrorSource = ""
End Sub
Sub fireError(strInfo, strMethod, strReason)
LastErrorInfo = strInfo
LastErrorMethod = strMethod
LastErrorReason = strReason
LastErrorNumber = Err.Number
LastErrorDescription = Err.Description
LastErrorSource = Err.Source
Err.Clear
fireEvent("onError")
End Sub
Function get_LastErrorInfo()
get_LastErrorInfo = LastErrorInfo
End Function
Function get_LastErrorMethod()
get_LastErrorMethod = LastErrorMethod
End Function
Function get_LastErrorReason()
get_LastErrorReason = LastErrorReason
End Function
Function get_LastErrorNumber()
get_LastErrorNumber = LastErrorNumber
End Function
Function get_LastErrorDescription()
get_LastErrorDescription = LastErrorDescription
End Function
Function get_LastErrorSource()
get_LastErrorSource = LastErrorSource
End Function
Function get_Version()
get_Version = GetResource("ver")
End Function
Function MsgCom(Index, Title, Text)
MsgCom = MsgBox (Text, Index, Title)
End Function
]]></script>
</component>
<!--
=====================================AutoIt.Msg===================================
-->
</package>
В данном примере вызывается функция MsgCom и возвращает значение выполнения функции, в случае ошибки вызова компонента предусмотрены функции выше, они вернут код ошибки в AutoIt скрипт, для того чтоб зарегистрировать компонент, достаточно нажать ПКМ на файл и выбрать "Подключить", после этого можно писать AutoIt код:
Код:
$oAutoIt = ObjCreate('AutoIt.Msg')
$Ret = $oAutoIt.MsgCom (64, 'AutoIt.Msg', 'Example')
MsgBox(0, 'Return', 'Return code = ' & $Ret)
P.S. Тестировалось на XP, отрабатывает отлично, прозьба протестировать на других системах.