Первый и последний раз
COM Objects
mIRC позволяет тебе (да, да, тебе) вызывать
объекты COM через свой скрипт. Ты (ты!)
должен уметь работать с объектами COM, чтобы заюзать эту фичу.
/comopen name progid
Эта команда открывает соединение COM с объектом progid, к примеру, с Excel.Application, и даёт имя этому соединению.
После этого вызова нужно проверить, что находится в
$comerr, дабы убедиться, что соединение успешно установлено.
/comclose name
Эта команда закрывает установленное ранее соединение.
/comreg -u filename
Эта команда регистрирует COM DLL в виндах или удаляет регистрацию.
example {
comopen name progid
; если comopen сдулся, есть вероятность, что DLL не зарегистрирована
if ($comerr) {
;так зарегистрируем её
comreg test.dll
;и снова попытаемся открыть
comopen name progid
;если опять облом, выходим
if ($comerr) halt
}
}
$comerr
Эту фиговину нужно проверять после каждого вызова команды COM. В ней обретается адын, если была ошибка, и 0, если оной не было.
$com(name,member,method,type1,value1,...,typeN,valueN)
Сие есть вызов члена открытого соединения COM - указываем метоод и параметры.
name - имя соединения.
member - имя члена.
method - комбинация из следующих констант:
1 = DISPATCH_METHOD
2 = DISPATCH_PROPERTYGET
4 = DISPATCH_PROPERTYPUT
8 = DISPATCH_PROPERTYPUTREF
type - тип переменной, возможные значения: i1, i2, i4, ui1, ui2, ui4, int, uint, r4, r8, cy, date, decimal, bool, bstr, variant, dispatch, unknown, error.
Эквиваленты из VB: boolean, byte, currency, date, double, integer, long, single, string, variant.
Чтобы передать переменную по ссылку, юзай * в имени типа, например, i1*
Чтобы назначить имя переменной, допиши его после типа, например. i1* varname
Когда юзаешь variant, нужно также указать её подтип, к примеру, variant bool.
value - значение передаваемое.
Возвращает: 1 = ok, 0 = упс.
После открытия соединения COM или вызова $com() можно юзать следующие формы $com():
$com(name/N)
Возвращает имя соединения (если открыто), или имя энного соединения. При N = 0 возвращает количество открытых соединений.
Свойства: progid, dispatch, unknown, result, error, errortext, argerr
progid - Имя объекта.
result - значение, возвращённое членом объекта COM после вызова.
error - значение ошибки, если она была.
errortext - описание ошибки.
argerr - Nый аргумент, который вызвал ошибку, если ошибка вызвана неверным типом переменной.
$com(name/N,varname)
Возвращает значение, соответствующее имени переменной.
Пример
Следующий скрипт - прорстой пример, соединяющийся с экселем и изменяющий значение проперти visible.
excel {
comopen excel Excel.Application
if ($comerr) {
echo comopen failed
halt
}
; проверим, видимо ли окно экселя
if ($com(excel,Visible,3) == 0) {
echo $com failed
goto finish
}
echo Visible: $com(excel).result
; сделаем видимым
if ($com(excel,Visible,5,i4,1) == 0) {
echo $com failed
goto finish
}
; снова проверим видимость
if ($com(excel,Visible,3) == 0) {
echo $com failed
goto finish
}
echo Visible: $com(excel).result
:finish
comclose excel
}
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас