Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 12:49

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Глупые вопросы по библиотеке automate.f от yz
СообщениеДобавлено: Пн июл 02, 2007 23:57 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 18
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Привет всем!

Есть программа:
Код:
S" ~yz\lib\automate.f" INCLUDED

0 VALUE TEMP_ZN

: TEST
ComInit
" C:/Temp/emtpar05.htm"  ObjectFromFile
;


Инструкция насчет слова ObjectFromFile говорит вот что:
Цитата:
ObjectFromFile ( filename -- object 0 / error)
Запускает сервер, создавший документ filename, загружает его и возвращает адрес объекта-документа.


На деле же исполнение слова TEST оставляет на стеке следующие значения:
Код:
TEST
Ok ( 0 1607396 0 )

И тут же файерволл начинает кричать, что spf4 лезет в сеть. Т.е. получается, что вместо того, чтобы запустить "сервер, создавший документ filename" spf сам начинает парсить и выполнять файл?

Далее, если верить инструкции, то 1607396 - это адрес объекта-документа. Но команды, имеющие отношение к объекту "документ" согласно MSDN, вызывают сообщения об ошибке.
Код:
TEST
Ok ( 0 1585228 0 )
DROP
Ok ( 0 1585228 )
TO TEMP_ZN
Ok ( 0 )
TEMP_ZN [[ Type ]]

Error: 0x80020006 Неизвестное имя.
call: "Type", argument: 0
TEMP_ZN [[ Type ]]
                ^  -1 ABORT

TEMP_ZN [[ Name ]]

Error: 0x80020006 Неизвестное имя.
call: "Name", argument: 0
TEMP_ZN [[ Name ]]
                      ^  -1 ABORT


И совершенно непонятно, что можно делать с таким объектом-документом, кроме как закрыть его (это единственная команда, которая не вызывает ошибку).

Если же заменить ссылку на " C:/Temp/test.hta" (файл реально существует по этому адресу), вылетает сообщение об ошибке, упомянутое в инструкции
Код:
TEST
Ok ( 0 2147746278(-2147221018) )


В общем, у меня стоит задача по расширению запустить файл hta и работать с ним в режиме COM сервера. Подскажите, плииз, что я не правильно делаю?

P.S. Пример из описания c файлом Word также не сработал - Word не запустился ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 03, 2007 09:56 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 660
Благодарил (а): 7 раз.
Поблагодарили: 25 раз.
marc_2006 писал(а):
P.S. Пример из описания c файлом Word также не сработал - Word не запустился ...


не знаю, как новые примеры, но скачанные около года назад примеры работали (Word, Excel точно).
из приведенного примера запуск TEST дает:

Код:
TEST
Ok ( 0 2147746276(-2147221020) )

даже без заранее созданного файла


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Глупые вопросы по библиотеке automate.f от yz
СообщениеДобавлено: Вт июл 03, 2007 10:17 
Не в сети

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
marc_2006 писал(а):
И тут же файерволл начинает кричать, что spf4 лезет в сеть. Т.е. получается, что вместо того, чтобы запустить "сервер, создавший документ filename" spf сам начинает парсить и выполнять файл?

SPF такого делать просто не умеет. Запускается некий СОМ-сервер, который оформлен в виде динамической библиотеки. Она грузится в адресное пространство SPF и пытается лезть в сеть.
Кто это - бог весть.

marc_2006 писал(а):
Но команды, имеющие отношение к объекту "документ" согласно MSDN, вызывают сообщения об ошибке.
И совершенно непонятно, что можно делать с таким объектом-документом, кроме как закрыть его (это единственная команда, которая не вызывает ошибку).

А вы знаете, что за сервер загрузился? Я - нет. Полазьте по ключам реестра, посмотрите, кто у вас зарегистрирован на расширение *.htm Это может быть какая-нибудь Опера или вообще заглушка. Попробуйте затребовать свойство Application.

marc_2006 писал(а):
В общем, у меня стоит задача по расширению запустить файл hta и работать с ним в режиме COM сервера. Подскажите, плииз, что я не правильно делаю?

Мне кажется, что стоит грузить не документ, а настоящее приложение, отвечающее за файлы *.hta
К сожалению, я не могу найти документацию, есть ли таковое в природе. Если вы знаете ссылку, напишите.

marc_2006 писал(а):
P.S. Пример из описания c файлом Word также не сработал - Word не запустился ...

С какой ошибкой? И система какая?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Глупые вопросы по библиотеке automate.f от yz
СообщениеДобавлено: Вт июл 03, 2007 11:25 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
yz писал(а):
Мне кажется, что стоит грузить не документ, а настоящее приложение, отвечающее за файлы *.hta
К сожалению, я не могу найти документацию, есть ли таковое в природе. Если вы знаете ссылку, напишите.


Немного информации о hta
http://www.script-coding.info/HTA.html


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 03, 2007 12:23 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 05, 2006 06:19
Сообщения: 192
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
может проблема в офисе?
микрасофтофис какой версии ?
винда опять же, виста ?

_________________
SPF


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 03, 2007 20:24 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 18
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
diver писал(а):
marc_2006 писал(а):
P.S. Пример из описания c файлом Word также не сработал - Word не запустился ...


не знаю, как новые примеры, но скачанные около года назад примеры работали (Word, Excel точно).

Примеры с явным вызовом приложения ( excel2.f, shell2.f, word2.f) отработали прекрасно. Вопросы возникли именно к работе слова ObjectFromFile.

diver писал(а):
из приведенного примера запуск TEST дает:
Код:
TEST
Ok ( 0 2147746276(-2147221020) )

даже без заранее созданного файла

Вот ещё более интересный пример: копирую файл emtpar05.htm в emtpar05.hta в ту же самую директрию и меняю htm на hta в программе. Результат точно такой же:
Код:
TEST
Ok ( 0 2147746278(-2147221018) )

Получается, что слово ObjectFromFile в упор не хочет замечать файлы hta. При всем при том, что они прописаны в системе и прекрасно запускаются при клике на них. :(


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Глупые вопросы по библиотеке automate.f от yz
СообщениеДобавлено: Вт июл 03, 2007 20:59 
Не в сети

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Kopa писал(а):

Немного информации о hta
http://www.script-coding.info/HTA.html

Это все не о том. Здесь не сказано ни слова о COM-сервере, обслуживающем hta.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 03, 2007 21:04 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 05, 2006 06:19
Сообщения: 192
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Microsoft Internet Explorer, начиная с версии 5, предоставляет возможность создавать HTML (HTA) приложения.
тоесть по моему скромному мнению ie это и есть тот сом сервер
или это слишком просто чтоб быть правдой ? :)

_________________
SPF


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Глупые вопросы по библиотеке automate.f от yz
СообщениеДобавлено: Вт июл 03, 2007 21:14 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 18
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
yz писал(а):
marc_2006 писал(а):
Но команды, имеющие отношение к объекту "документ" согласно MSDN, вызывают сообщения об ошибке.
И совершенно непонятно, что можно делать с таким объектом-документом, кроме как закрыть его (это единственная команда, которая не вызывает ошибку).

А вы знаете, что за сервер загрузился? Я - нет. Полазьте по ключам реестра, посмотрите, кто у вас зарегистрирован на расширение *.htm Это может быть какая-нибудь Опера или вообще заглушка.

На расширение *.htm прописан Интернет Эксплорер. Он же грузится и при клике на файле htm и при запуске файла htm из командной строки командой start.

yz писал(а):
Попробуйте затребовать свойство Application.

Код:
TEST
Ok ( 0 1584860 0 )
DROP
Ok ( 0 1584860 )
TO TEMP_ZN
Ok ( 0 )
TEMP_ZN [[ Application ]]

Error: 0x80020006 Неизвестное имя.
call: "Application", argument: 0
TEMP_ZN [[ Application ]]
                       ^  -1 ABORT

Методом научного тыка дополнительно удалось получить вот такие данные:
Цитата:
TEMP_ZN [[ docType ]]
Ok ( 0 )

TEMP_ZN [[ protocol ]]
Ok ( 3310868 )
.ASCIIZ
File Protocol Ok


yz писал(а):
marc_2006 писал(а):
В общем, у меня стоит задача по расширению запустить файл hta и работать с ним в режиме COM сервера. Подскажите, плииз, что я не правильно делаю?

Мне кажется, что стоит грузить не документ, а настоящее приложение, отвечающее за файлы *.hta

Да я бы с удовольсвием, но не знаю, как вызывать это приложение, чтобы стало возможным работать с ним в COM режиме.

yz писал(а):
К сожалению, я не могу найти документацию, есть ли таковое в природе. Если вы знаете ссылку, напишите.

Запуск файлов hta прописан на "Microsoft (R) HTML Application host", запускаемый файл mshta.exe.

yz писал(а):
marc_2006 писал(а):
P.S. Пример из описания c файлом Word также не сработал - Word не запустился ...

С какой ошибкой?

Без ошибки. Это я ошибся - слово вернуло адрес объекта, которая на команду Name выдало название файла.doc. И я посмотрел в процессах - там появился Word, запущенный с параметром -Embedding. Приношу свои извинения за дезинформацию...

yz писал(а):
И система какая?

Win XP. Все проги проверял на двух машинах (дома и на работе), результаты одинаковы...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 03, 2007 21:29 
Не в сети

Зарегистрирован: Сб май 19, 2007 18:05
Сообщения: 18
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
mrack писал(а):
Microsoft Internet Explorer, начиная с версии 5, предоставляет возможность создавать HTML (HTA) приложения.
тоесть по моему скромному мнению ie это и есть тот сом сервер
или это слишком просто чтоб быть правдой ? :)

Я не так уж туп, как кажусь на первый взгляд, посему проверял эту версию в самом начале работы над задачей :). Грузить то он грузит, но при этом все шаги требует подтверждать и постоянно ругается на безопасность. В то же время, как запуск hta из командной строки командой start вызывает запуск другого сервера mshta.exe, который выполняет файлы hta "молчком".

Кстати, раз уж зашел разговор об IE: кто-нибудь знает, как правильно дать COM-команду IE, чтобы он сохранил htm файл в формате txt? Команда SaveAs будучи применена как к IE, так и к "IE content" , выдает сообщения об ошибке. Может, кто знает, где про это можно прочитать? К MSDN просьба отсылать только с точным адресом: сам там в онлайновом режиме "пасусь" каждый день, но этой информации (точнее такой информации, которая сработала бы через библиотеку automate.f) не нашел...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 03, 2007 22:41 
Не в сети

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
mrack писал(а):
Microsoft Internet Explorer, начиная с версии 5, предоставляет возможность создавать HTML (HTA) приложения.
тоесть по моему скромному мнению ie это и есть тот сом сервер
или это слишком просто чтоб быть правдой ? :)


Логично было бы предположить, что IE и есть com сервер для обработки *.hta и *.htm, но поиск в реестре это не подтверждает. Все эти расширения висят на каком-то persistent handler (не знаю, что это такое, но не сервер) с guid {eec97550-47a9-11cf-b952-00aa0051fe20}. Этот самый сервер зарегистрирован на библиотеку mshtml.dll. Это она и лезет в Интернет при попытке запуска.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Глупые вопросы по библиотеке automate.f от yz
СообщениеДобавлено: Вт июл 03, 2007 22:48 
Не в сети

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
marc_2006 писал(а):
На расширение *.htm прописан Интернет Эксплорер. Он же грузится и при клике на файле htm и при запуске файла htm из командной строки командой start.

Это не имеет отношения к запуску документа через COM.

В общем, я покопался в своей системе. Результаты следующие:

Загрузка через ObjectFromFile любой страницы как и положено возвращает объект-документ. Занимается этим сервер, работающий внутри процесса. Он находится в mshtml.dll. Сам IE - это не более, чем графический интерфейс к этой библиотеке.

ObjectFromFile дает объект с интерфейсом IHTMLDocument2.
Name, Application и прочее не работают, потому что таких свойств там нет. Вот список того, что есть: http://msdn2.microsoft.com/en-us/library/aa752574.aspx

Работает, например, вот это:
Код:
REQUIRE ComInit ~yz\lib\automate.f

0 VALUE a

: TEST
ComInit DROP
" f:/Юра/демшиза.htm"  ObjectFromFile .err TO a
a [[ charset ]] .ASCIIZ
a Quit
ComDestroy
;

TEST BYE


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB