любом из вебсайтов, то можно увидеть примерно такое распределение версий ОС у посетителей:
Видно, что наибольший процент посетителей используют ОС Windows 2000 или Windows XP. Поэтому будем ориентироваться на структуру реестра именно этих OC.
В данном документе описан процесс разработки отдельных процедур программы для Интернет-рекламы.
3. Структура программы
Программа прединсталлятор должна быть компактной, быстро исполняться, отрабатывать рекламный сервис, запускать инсталляцию основной программы и завершать свою работу.
В нашем примере программа-прединсталлятор будет состоять из прозрачной формы Form1 (Border Style = 0, Appearance = 0).
4. Подключение рекламного сервиса
Рекламный сервис может выполняться разными способами:
- обязательным однократным или многократным посещением web страницы разработчика или спонсора; - размещением рекламного плаката в качестве wallpapers; - записью ссылки на web сайт спонсора или разработчика в Favorites; - каким-либо иным способом.
Внимание! В любом случае пользователь должен быть предупрежден об особенностях сервиса, включенного в программное обеспечение. Производить или не производить инсталляцию - выбор пользователя.
Рассмотрим вариант, когда программа-прединсталлятор устанавливает в качестве стартовой страницы для Internet Explorer страницу спонсора.
Для этого необходимо выполнить запись в реестр Windows. Это может быть проделано непосредственно из программы на Delphi или с помощью Java-скрипта. Достаточно создать на диске текстовый файл Java-скрипта и записать в него код, а затем запустить из Delphi программы.
Листинг для записи в текстовый файл из программы на Delphi - в файле, в конце статьи.
Текст Java-скрипта (всего 3 строчки):
var WSHShell = WScript.CreateObject("WScript.Shell"); WSHShell.Popup("Стартовая страница"); WSHShell.RegWrite("HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main\\Start Page", "http://www.privet.com");
Напишем Delphi-код для записи JS скрипта в файл set-page.js.
Код:
procedure TForm1.FormActivate(Sender: TObject); begin AssignFile(f, 'c:\set-page.js'); Rewrite(f); // Создать и открыть файл writeln(f, 'var WSHShell = WScript.CreateObject'+chr(40)+chr(34)+'WScript.Shell'+chr(34)+chr(41)+chr(59)); // Записать СТРОКУ в файл writeln(f, 'WSHShell.Popup'+chr(40)+chr(34)+'Стартовая страница'+chr(34)+chr(41)+chr(59)); // Записать СТРОКУ в файл writeln(f, 'WSHShell.RegWrite'+chr(40)+chr(34)+'HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main\\Start Page'+chr(34)+', '+chr(34)+'http://www.privet.com'+chr(34)+chr(41)+chr(59)); // Записать СТРОКУ в файл CloseFile(f); // Закрыть файл ShellExecute(Handle, 'open', 'c:\set-page.js', nil, nil, SW_HIDE); // Выполнить команду. // Запустить скрипт end;
Здесь " + chr(34) + " - код для записи кавычек в файл Java-скрипта. Аналогично - для скобок и точки с запятой - '+chr(34)+chr(41)+chr(59)". ASCII-коды можно посмотреть на http://www.lookuptables.com .
А для работы с ShellExecute необходимо добавить объявление (выделено красным): uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI;
При выполнении такой программы-инсталлятора в качестве стартовой страницы броузера Internet Explorer в Windows 2000 и Windows XP будет установлен адрес вебсайта www.privet.com.
Полный проект смотрите в файле в конце статьи.
Здесь приведен самый простой вариант программы. В него надо добавить всего одну строку кода - запуск инсталляции основной программы. Это можно сделать просто включив в программу еще одну строку - например для инсталляции приведенной выше программы PIPA.EXE:
ShellExecute(Handle, 'open', ' pipa.exe', nil, nil, SW_HIDE);
Кроме того, следует удалить с диска файл с Java-скриптом, как уже ненужный после начала инсталляции
ShellExecute(Handle, 'open', ' kill c:\set-page.js', nil, nil, SW_HIDE);
Это самый простой образец программы-инсталлятора. Эффективность работы его можно значительно повысить, если произвести некоторые доработки - например, файлы конфигурации. Тогда программа-прединсталлятор станет более универсальной, подходящей для широкого использования. Можно разработать программу для создания, редактирования и кодирования файлов конфигурации прединсталлятора. Т.е. разработать новый коммерческий продукт.
Программа-инсталлятор имеет удивительную эффективность для создания трафика - с самых "банальных" web-сайтов с посещаемостью 300-600 человек в день скачивается 100-150 экземпляров программ минимум. Можете представить сколько посещений вебсайта спонсора может обеспечить прединсталлятор.
Эффективность программы-прединсталлятора можно повысить производя так же и запись в Favorites броузера. Ничего сложного в этом нет. Каждая запись в Favorites ("Избранное") - это специальный файл в особом каталоге на диске "C:\".
5. Запись в Favorites
Для этого необходимо работать с реестром Windows. Команды для работы с реестром.
function ReadString(const Name: String): String;
Возвращает строку значения параметра Name текущего ключа. При ошибке чтения генерируется исключение и возвращенное значение является ошибочным.
Пример: uses Registry; ... var Reg : TRegistry; begin Reg := TRegistry.Create; Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('\My Registry\',true); Edit1.Text:= Reg.ReadString('My'); Reg.CloseKey; Reg.Destroy; end;
Продемонстрируем функцию для чтения значения ключа реестра, в котором выше установили адрес стартовой страницы Internet Explorer (на форму Form1 нужно добавить кнопку Button1):
procedure TForm1.Button1Click(Sender: TObject); begin Reg := TRegistry.Create; Reg.RootKey:=HKEY_CURRENT_USER; Reg.OpenKey('\Software\Microsoft\Internet Explorer\Main\',true); Form1.Caption:= '' + Reg.ReadString('Start Page'); Reg.CloseKey; Reg.Destroy; end;
Для работы с реестром необходимо добавить объявление (выделено красным): uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Registry, ShellAPI;
Полный Delphi-проект с этого этапа разработки смотрите в файле в конце статьи.
Рассмотрим Delphi код для создания записи в Favorites ("Избранное").
Напишем более простой код. Добавим его в процедуру TForm1.Button1Click:
procedure TForm1.Button1Click(Sender: TObject); begin Reg := TRegistry.Create; Reg.RootKey:=HKEY_CURRENT_USER; Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\',true); Form1.Caption:= '' + Reg.ReadString('Favorites') + '\' + 'Zagranica.url'; ee:= Reg.ReadString('Favorites') + '\' + 'Hello.url'; Reg.CloseKey; Reg.Destroy;
Form1.Caption:= ee;
//Создать новую запись в Favorites //C:\Documents and Settings\Administrator\Favorites
AssignFile(f, ee); Rewrite(f); // Создать и открыть файл writeln(f, '[DEFAULT]'); writeln(f, 'BASEURL= http://www.geocities.com/aboutsoft/'); writeln(f, '[InternetShortcut]'); writeln(f, 'URL= http://www.geocities.com/aboutsoft/'); writeln(f, 'Modified=70037C581883C001A1'); CloseFile(f); // Закрыть файл end;
Полный Delphi проект программы смотрите в файле в конце статьи.
В принципе, здесь создан еще один коммерчески ориентированный продукт. Представьте себе веб-сайт-каталог тематических ссылок. Например список ссылок на mp3 музыкальные сайты. Используя приведенный выше VB код, можно создать такой каталог тематических ссылок на компьютере, в Favorites. Создается вложенная папка, например, "MP3 ссылки". И в неё помещаются записи с ссылками на тщательно проверенные каталоги MP3 музыки. Программа для создания таких каталогов - вполне коммерческий продукт. Новый продукт. Эта ниша на рынке еще не занята. Кроме того, программа может быть немного усовершенствована и получать обновления списка вебсайтов с вебстраницы разработчика. Технически, это очень просто.
6. Wallpapers - рекламные обои
В предыдущем руководстве программиста показано, что обои (оформление рабочего стола) тоже могут использоваться в рекламных технологиях.
procedure TForm1.Button1Click(Sender: TObject); var Picture: TPicture; Desktop: TCanvas; X, Y: Integer; begin // Objekte erstellen // create objects Picture := TPicture.Create; Desktop := TCanvas.Create;
// Bild laden // load bitmap Picture.LoadFromFile('bitmap1.bmp');
// Geratekontex vom Desktop ermitteln // get DC of desktop Desktop.Handle := GetWindowDC(0);
// Position des Bildes // position of bitmap X := 100; Y := 100;
// Bild zeichnen // draw bitmap Desktop.Draw(X, Y, Picture.Graphic);
// Geratekontex freigeben ReleaseDC(0, Desktop.Handle);
// Objekte freigeben // release objects Picture.Free; Desktop.Free; end;
7. Об эффективности
Эффективность использования программ-прединсталляторов чрезвычайно высока. Свыше 70% программ инсталлируются сразу после скачивания и без всякого анализа состава программного пакета. В лучшем случае читается файл "readme.txt".
Рекламную эффективность программ-прединсталлятров можно значительно увеличить используя специальный инсталлируемый на компьютер модуль для загрузки рекламы. В таком случае программа превращается в разновидность Adware и может вызвать у пользователей негативную реакцию. Тем не менее, рынок такого программного обеспечения развит и спонсорам предлагаются программные модули для загрузки рекламы по цене от 300$.
Обращаю Ваше внимание, что потребители (пользователи) программного обеспечения должны быть предупреждены о том, что условием использования программных продуктов будет просмотр рекламной информации спонсора.
Руководство написано для широкого круга лиц - программистов, администраторов, пользователей бесплатного ПО.
Ссылки по теме
Файлы для загрузки