Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   COM объекты (https://javascript.ru/forum/misc/2502-com-obekty.html)

remitmaster 06.01.2009 19:32

COM объекты
 
Добрый вечер, скажите пожалуйста, может ли JavaScript работать с COM объектами? Информации нашел очень мало, но есть один пример который пытается манипулировать с оутлуком http://www.codeproject.com/KB/office/OutlookDemo.aspx, у меня не получилось его запустить, если это возможно и кто-то сталкивался с такой задачей поделитесь пожалуйста информацией, буду очень благодарен.

Андрей Параничев 06.01.2009 19:48

Можно работать с ActiveX объектами, но только из браузера IE и только если пользователь разрешит в настройках. Либо из HTA или клиенстких JScript через WSH. Если разговор идет об обычной интернет-странице, то ответ скорее "нельзя".

remitmaster 06.01.2009 19:52

А что значит

Цитата:

или клиенстких JScript через WSH

Вот что удалось нати, но это очень старая информация


Цитата:

ActiveXObject NN n/a IE 4.0 ECMA n/a

Объект ActiveXObject используется для запуска объектов ActiveX. После создания объекта ActiveX (т. е. после запуска соответствующей программы) мы можем обращаться к его методам и свойствам, используя стандартный синтаксис языка JavaScript. Встроенных свойств и методов этот объект не имеет.

Пример: если на компьютере-клиенте установлен Microsoft Word 7.0, то следующий сценарий его запустит, откроет документ Mydoc.doc, сохранит этот документ в текстовом формате и завершит работу MS Word.

var word = new ActiveXObject("Word.Application"); // запускает MS Word
word.Documents.Open("Mydoc.doc"); // открывает документ
word.ActiveDocument.SaveAs("Mydoc.txt", 4); // 4 = текстовый формат DOS
word.Quit(); // завершает работу MS Word

Следует помнить, что после запуска объекта ActiveX он остается активным до закрытия окна обозревателя, из которого он был вызван. JScript не содержит стандартного средства для завершения работы этого объекта. Если мы хотим, чтобы объект прекратил работу ранее завершения работы нашего сценария, то должны вызвать соответствующий метод данного объекта (в приведенном примере это метод Quit).

Любопытно, что операция typeof возвращает для свойств и методов объектов ActiveX нестандартное значение "unknown" (видимо из-за того, что все объекты ActiveX являются наследниками COM-интерфейса IUnknown).


Андрей Параничев 06.01.2009 20:01

remitmaster,
Клиентских JScript это значит, что запускается файл с расширением *.js двойным кликом (или из командной строки через интерпретатор cscript.exe). Тогда сценарий будет выполнен в рамках WSH и иметь определенные разрешения на использование ActiveX объектов.

Вот хороший сайт со статьями по windows-скриптам: http://script-coding.info/. На нашем сайте информация больше по браузерным скриптам, которые не могут работать с ActiveX в большинстве случаев.

remitmaster 06.01.2009 20:12

Спасибо большое!


Часовой пояс GMT +3, время: 08:41.