Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Нестандартные приемы программирования Delphi - Ревич Ю.

Ревич Ю. Нестандартные приемы программирования Delphi — Спб.: БХВ-Петербург, 2005. — 560 c.
ISBN 5-94157-686-2
Скачать (прямая ссылка): nestandartniepriemiprogrammirovanie2005.djvu
Предыдущая << 1 .. 156 157 158 159 160 161 < 162 > 163 164 165 166 167 168 .. 218 >> Следующая

; except try
st:=ReadString('ctfmon.exe'); except
CloseKey; {нет ни того, ни другого}
Free;
exit;
end;
end;
if sto" then CheckBoxl .Enabled:=True; st: = ";
Rootkey:=HKEY_CURRENT_USER;
Регистрируем и инсталлируем
395
if Орепкеу(1 Keyboard LayoutXToggle',False) then try {пункт Переключать
раскладки клавиатуры) st:=Read3tring('Layout Hotkey'); except
CloseKey; (нет такого)
Free;
exit;
end;
if sto'' then FlagLay:--7rue; {есть такой)
CloseKey; {подчистили I Free; end; end;
Здесь мы определяем, есть ли в автозапуске системный переключатель и
существует ли параметр Layout Hotkey. Если системный переключатель
имеется, то CheckBoxl будет активирован.
Теперь сначала создадим процедуру, которую надо предпринять при нажатии
кнопки Прервать. Напоминаю, что в этом случае мы должны не просто выйти
из программы, но и удалить все ранее скопированные файлы и созданную
папку. Если вдруг между началом установки и отменой в папке появились
лишние файлы, то мы извинимся:
procedure TForml .Button2C.lick (Sender: TObject); begin {прервать
установку)
Formi.Hide;
ChDir(ExtractFilePath(ParamStr(0))); if FindFirstfaAnyFile,sf)-0 then
begin repeat if not FlagDel then if
(ANSIUpperCase(sf.Name)OANSIUpperCase('Langswitch.exe')) and
(ANSIUpperCase(s?.Name)OANSIUpperCase('LangHook.dll')) and
(ANSIUpperCase(sf.Name)OANSIUpperCase('LShelp.htm')) and
(ANSIUpperCase(sf.Name)OANSIUpperCase('Setup.exe')) then begin
{в uninstall убрать setup.exe, добавить еще Langswitch.ini, SETUP.sav,
uninstall.exe)
st:='B папке '+ExtractFilePath(ParamStr(0))+' '+#10+
'найден неизвестный файл '+sf.Name+
' Удалить все такие файлы?'; if Application.MessageBox(Pchar(st),'Ошибка
деинсталляции',mb OKCANCEL)oidOK
396
Глава 17
then break else FlagDel:=True; end;
DeleteFile(sf .Name) ; until (FindNext (sf) <>0);
FindClose(sf); try
RmDir(ExtractFilePath(Paramstr(0))); (удаляем весь каталогI except
st;='Невозможно удалить папку'
+ExtractFilePath(ParamStr(0])+' ';
Application.MessageBox(Pchar(st),'Извините',mb_OK); end; end;
Halt;
end;
После этого создадим отдельную процедуру, которая будет демонстрировать
нам диалог при окончании установки:
procedure Endlnst; begin
Formi.Hide;
if FlagRStrt then (нужен перезапуск) begin
st:='HnH окончания установки необходим перезапуск компьютера.'
+#10+' Перезапустить его сейчас?';
if Application.MessageBox(Pchar(st),'Установка Langswitch
завершена',mb_QKCANCEL)=idOK then
Win32Check(ExitWindowsEx(ewx_REBOOT,0)); end else
if Application.MessageBox('Установка завершена. Показать
справку?','Langswitch',mb_OKCANCEL)=ldOK then
SheliExecute(Formi.Handle,'open', 'LShelp.htm',
nil,nil,SW_SHOWNORMAL);
(запускаем саму программу:)
SheliExecute(Formi.Handle, 'open1, 'Langswitch.exe',
nil, nil, SW_SHOWNORMAL);
DeleteFile('setup.exe');
Formi.Close; end;
Флаг FlagRStrt мы будем устанавливать в зависимости от того, внесли мы
изменения в реестр или нет. Точнее, мы не будем его устанавливать в том
случае, если в реестр внесены только изменения, касающиеся добавления
Регистрируем и инсталлируем
397
пашей программы в автозапуск. И наконец, вот так будет выглядеть
процедура самой инсталляции:
procedure TForml.ButtonlClick(Sender: TObject); begin (продолжить
инсталляцию!
Forml.Hide;
if (CheckBox!.Enabled-True) and (CheckBoxl.Checked) then begin (будем
убирать системный переключатель I FlagRStrt:=True; (придется
перезапускать!
Reg := TRegistry.Create;
with Reg do
begin
Rootkey;=HKEY_LOCAL_MACHINE; if Openkey(
1 Software\Microsoft\Windows\CurrentVersion\Run', False) then try
{системная перекпючалка клавиатуры)
st:=ReadString('internat.exe'); except try
s t.: - Rea dS t r i ng ('ctfmon.exe') ; exoept end; end;
if DeleteValue(st) then
(если успешно удалили, то запоминаем параметр) begin
IniFile:=TIniFile.Create(ChangeFileExt(ParamStr(0),'.sav'));
IniFale.WriteString!'Run1,'System',st);
IniFile.Dest roy; end;
CloseKey; (подчистили)
Free;
end;
end; (убрали системный переключатель) if FlagLay=True then
begin (убираем пункт Переключать раскладки клавиатуры)
FlagRStrt:=True; (придется перезапускать)
Reg := TRegistry.Create;
with Reg do
begin
Root key:=HKEY_CURRENT_USER;
398
Глава 17
if Openkey('Keyboard Layout\Toggle',False) then try {пункт Переключать
раскладки клавиатурыI st:=ReadString('Layout Hotkey'); {запоминаем
параметр)
IniFile:=TIniFile.Create(ChangeFileExt(ParamStr(0),'.sav'));
IniFile.WriteString('Layout','Hotkey', st);
IniFile.Destroy;
WriteString('Layout Hotkey'3'); (успешно изменили) except end;
CloseKey; {подчистили)
Free;
st:='Будет отключен пункт "Переключать раскладки
клавиатуры".'+#10+'Подробности см. в справке Langswitch';
Application.MessageBox(Pchar(st),'Внимание!',mb_OK); end;
end; {убрали пункт Переключать раскладки клавиатуры)
if CheckBox2.Checked then
begin {вносим нашу программу s автозапуск)
Reg := TRegistry.Create;
with Reg do
begin
Root key:=HKEY_LOCAL_MACHINE; if Openkey(
'Software\Microsoft\Windows\CurrentVersion\Run',False)
Предыдущая << 1 .. 156 157 158 159 160 161 < 162 > 163 164 165 166 167 168 .. 218 >> Следующая