Средства разработки приложений


Связка ActiveX - Internet Explorer - часть 4


Конечно можно было бы хранить свои файлы например в каталоге [Windows], но почему-то функция GetWindowsDirectory при вызове из ActiveX-компонента возвращала ошибку, хотя тут же нормально отрабатывала из обыкновенного приложения (exe). То же и с GetSystemDirectory и GetTempDirectory.

Как сделать компонент тиражируемым? Чтобы пользователь смог работать с ним сразу же, не запуская никаких дополнительных программ, не указывая всяких-разных путей и т.д. Вот пример HTML-странички (а его скриншот): <html> <HEAD> <title>Поиск</title> <SCRIPT LANGUAGE="VBScript"> <!-- Sub Procedure1() location.href = findword1.NewStroke

{Получить от компонента имя файла и открыть его для просмотра. Эта процедура запускается при возникновении события OnDocClick. Location - объект Explorer'а (см. документацию по VBScript)} end sub --> </SCRIPT> </HEAD> <SCRIPT LANGUAGE="VBScript"> <!-- Sub findword1_OnWantDir() findword1.page_location = location.href

{Получить текущий каталог, т.е. свойству page_location объекта присвоить местоположение нашей странички} end sub Sub findword1_OnDocClick()

{При возникновении события OnDocClick вызвать процедуру Procedure1 (открыть файл для просмотра)} call Procedure1() end sub --> </SCRIPT> <p align = "center"> <OBJECT ID="findword1" CLASSID="CLSID:47E50425-E611-11D3-970A-4854E82B17E6" CODEBASE="findwords.ocx">

{Здесь просто имя файла без пути. Explorer зарегистрирует компонент невидимо для пользователя, взяв его из текущеего каталога (страничка и файл OCX находятся в одном каталоге)} <PARAM NAME="Visible" VALUE="-1"> <PARAM NAME="AutoScroll" VALUE="0"> <PARAM NAME="AutoSize" VALUE="0"> <PARAM NAME="AxBorderStyle" VALUE="1"> <PARAM NAME="Caption" VALUE="findword"> <PARAM NAME="Color" VALUE="2147483663"> <PARAM NAME="Font" VALUE="MS Sans Serif"> <PARAM NAME="KeyPreview" VALUE="0"> <PARAM NAME="PixelsPerInch" VALUE="96"> <PARAM NAME="PrintScale" VALUE="1"> <PARAM NAME="Scaled" VALUE="-1"> <PARAM NAME="DropTarget" VALUE="0"> <PARAM NAME="DoubleBuffered" VALUE="0"> <PARAM NAME="Enabled" VALUE="-1"> <PARAM NAME="BiDiMode" VALUE="0"> <PARAM NAME="Cursor" VALUE="0"> <PARAM NAME="filename" VALUE="nothing"> <PARAM NAME="page_location" VALUE=""> </OBJECT> </p> </BODY> </html>

И еще раз: 1) открываем нашу страничку (в IE 4 и выше); 2) если компонент зарегистрирован, он сразу показывается, если не зарегистрирован, то регистрируется и показывается.При этом: 3) после создания выдерживается пауза в полсекунды и запрашивается текущий каталог (и страничка и сам OCX-файл находятся в одном каталоге, который и будет текущим). 4) если нужно открыть на просмотр какую либо страничку (выбранную пользователем в процессе работы из списка - см. ), то свойству компонента (при внедрении его в страничку правильнее будет называть его уже объектом) присваивается значение (имя файла), генерируется событие. Cкрипт-обработчик этого события читает свойство и отрывает требуемый файл.

 


Начало  Назад  Вперед



Книжный магазин