|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Создание Gadget на Delphi с использованием ActiveFormX
Пример создания простейшего гаджета для Sidebar Windows Vista и Windows 7.
Целью данного примера является показать как можно создавать гаджеты в среде Delphi с использованием ActiveXForm, регистрацией объектов ActiveX с помощью JavaScript. Также это может быть полезно при создании ActiveX библиотек и объектов автоматизации для использования в гаджетах для выполнения "сложных или нереализуемых" функций в JavaScript. Ну или кому просто лень изучать JavaScript. Создадим папку проекта, к примеру c:\MyActiveFormXGadget\ В Delphi создадим новый проект: -меню File-New-Other -вкладка ActiveX -Active Form Укажем имя формы MyActiveFormXGadget, имя модуля MyActiveFormXGadgetImpl.pas и имя проекта MyActiveFormXGadgetProj.dpr: Изменим в Object Inspector некоторые свойства формы: AxBorderStyle := afbNone Caption := ‘’ Width := 120 Height := 250 Добавим на форму TLabel, TEdit, пару TButton и TMemo: Создадим обработчики событий OnClick для TButton: Код:
procedure TMyActiveFormXGadget.Button1Click(Sender: TObject); begin Memo1.Lines.Add(Edit1.Text); end; procedure TMyActiveFormXGadget.Button2Click(Sender: TObject); begin Memo1.Clear; end; Откроем библиотеку типов: -меню View-Type Library Щелкнем на MyActiveFormXGadget: Скопируем куда-нибудь значение GUID {E0DC92BD-F101-44E0-84F6-F39B7DA5A424}, которое было автоматически сгенерировано и будет всегда отличаться для каждого проекта. Сохраним File-Save Project As проект в папку c:\MyActiveFormXGadget\ Откомпилируем проект Project-Build Если все прошло удачно получим файл c:\MyActiveFormXGadget\MyActiveFormXGadgetProj.ocx Он и будет выполнять функции гаджета. Теперь приступим к файлам гаджета. Для начала создадим папки: css/ images/ js/ В папке css/ будут лежать css-файлы каскадных таблиц стилей, в images/ файлы иконки и логотипа, в js/ файл скрипта регистрации объекта. Файл манифеста и основной файл должны находиться в корневой папке. Создаем в блокноте файл манифеста gadget.xml: Код:
<?xml version="1.0" encoding="utf-8" ?> <gadget> <name>GadgetActiveFormX</name> <namespace>GadgetActiveFormX</namespace> <version>1.0</version> <author name="Медведев Олег"> <info url="http://grafmoto.narod.ru/" /> <logo height="48" width="48" src="images/logo.png" /> </author> <copyright>2010</copyright> <description>GadgetActiveFormX - Example</description> <icons> <icon height="48" width="48" src="images/icon.png" /> </icons> <hosts> <host name="sidebar"> <base type="HTML" apiVersion="1.0.0" src="gadget.html" /> <permissions>Full</permissions> <platform minPlatformVersion="0.3" /> </host> </hosts> </gadget> и сохраним его в кодировке UTF-8 как c:\MyActiveFormXGadget\gadget.xml Затем создаем основной файл гаджета gadget.html: Код:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="css/gadget.css" type="text/css" rel="stylesheet" /> <script language="JavaScript" src="js/gadget.js" type="text/javascript"></script> </head> <body> <div id="gadget"> <object classid="clsid:{E0DC92BD-F101-44E0-84F6-F39B7DA5A424}"></object> </div> </body> </html> и сохраним его в кодировке UTF-8 как c:\MyActiveFormXGadget\gadget.html В значение параметра classid (строка <object classid="clsid:{E0DC92BD-F101-44E0-84F6-F39B7DA5A424}"></object>) подставляем значение GUID. Как видно используются файлы gadget.css (каскадные таблицы стилей для описания разметки документа) и gadget.js (скрипт для регистрации объекта). Файл gadget.css выглядит следующим образом: Код:
body { width:130px; height:260px; margin:0px; padding:0px; color:#ffffff; } #gadget { width:120px; height:250px; position:absolute; top:5px; left:5px; overflow:hidden; margin:0px; padding:0px; } Его также создаем в блокноте и сохраняем в кодировке UTF-8 в c:\MyActiveFormXGadget\css\gadget.css Файл скрипта gadget.js: Код:
var Clsid = "{E0DC92BD-F101-44E0-84F6-F39B7DA5A424}"; var ClassName = "MyActiveFormXGadgetProj.MyActiveFormXGadget"; var LibPath = System.Gadget.path + "\\MyActiveFormXGadgetProj.ocx"; var oShell = new ActiveXObject("WScript.Shell"); function RegisterLibrary() { oShell.RegWrite("HKCU\\SOFTWARE\\Classes\\" + ClassName + "\\", ClassName, "REG_SZ"); oShell.RegWrite("HKCU\\SOFTWARE\\Classes\\" + ClassName + "\\CLSID\\", Clsid, "REG_SZ"); oShell.RegWrite("HKCU\\SOFTWARE\\Classes\\CLSID\\" + Clsid + "\\", ClassName, "REG_SZ"); oShell.RegWrite("HKCU\\SOFTWARE\\Classes\\CLSID\\" + Clsid + "\\InprocServer32\\", LibPath, "REG_SZ"); oShell.RegWrite("HKCU\\SOFTWARE\\Classes\\CLSID\\" + Clsid + "\\ProgID\\", ClassName, "REG_SZ"); } function UnregisterLibrary() { oShell.RegDelete("HKCU\\SOFTWARE\\Classes\\CLSID\\" + Clsid + "\\ProgID\\"); oShell.RegDelete("HKCU\\SOFTWARE\\Classes\\CLSID\\" + Clsid + "\\InprocServer32\\"); oShell.RegDelete("HKCU\\SOFTWARE\\Classes\\CLSID\\" + Clsid + "\\"); oShell.RegDelete("HKCU\\SOFTWARE\\Classes\\" + ClassName + "\\CLSID\\"); oShell.RegDelete("HKCU\\SOFTWARE\\Classes\\" + ClassName + "\\"); } RegisterLibrary(); window.attachEvent("onunload", UnregisterLibrary); Переменной Clsid присваиваем значение GUID. Значение ClassName складывается как имя_проекта.имя_формы (элемента ActiveX). В LibPath указываем имя ocx-файла. Остальное оставляем без изменений. Создаем в блокноте и сохраняем в кодировке UTF-8 в c:\MyActiveFormXGadget\js\gadget.js Ну и напоследок в папку images/ кидаем пару png-картинок: иконку и логотип. Теперь собираем нужные файлы в cab-архив (make.bat) командой: cabarc -r -p n axf.gadget css\gadget.css js\gadget.js images\icon.png images\logo.png gadget.xml gadget.html MyActiveFormXGadgetProj.ocx Имя архивного файла axf.gadget – гаджет готов. Скачать проект: https://yadi.sk/d/DCZc5Q9ldQzw9 Последний раз редактировалось NumLock, 16.12.2014 в 18:05. |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Tech N9ne (29.01.2019)
|