Ответ в окне браузера:
ты ответа не дождешься, глупый юзер, я не твой!
// You need: 1 TEdit, 2 TButtons, 1 TWebbrowser const
NotAllowed: setof Char = ['"'] + ['/'] + ['\'] + ['?'] + [':'] + ['*'] +
['<'] + ['>'] + ['|'];
implementation{$R *.DFM}function Load(Path, Key: string): string;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey(Path, False);
try
Result := Reg.ReadString(Key);
except
Result := '';
end;
Reg.CloseKey;
finally
Reg.Free;
end;
end;
function WinDir: string;
var
WinDir: PChar;
begin
WinDir := StrAlloc(MAX_PATH);
GetWindowsDirectory(WinDir, MAX_PATH);
Result := string(WinDir);
if Result[Length(Result)] <> '\' then
Result := Result + '\';
StrDispose(WinDir);
end;
function GetSysDir: string;
var
dir: array [0..MAX_PATH] of Char;
begin
GetSystemDirectory(dir, MAX_PATH);
Result := StrPas(dir);
end;
// Navigate to a page procedure TForm1.Button1Click(Sender: TObject);
begin
Webbrowser1.Navigate(edit1.Text);
end;
// Add the current page to the favorites procedure TForm1.Button2Click(Sender: TObject);
var
url: TStringList;
fav: string;
title, b: string;
i: Integer;
c: Char;
begin
fav := Load('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders','Favorites');
url := TStringList.Create;
try
url.Add('[InternetShortcut]');
url.Add('URL=' + webbrowser1.LocationURL);
url.Add('WorkingDirectory=' + WinDir());
url.Add('IconIndex=0');
url.Add('ShowCommand=7');
url.Add('IconFile=' + GetSysDir() + '\url.dll');
title := Webbrowser1.LocationName;
b := '';
for i := 1 to Length(title) dobegin
c := title[i];
ifnot (c in NotAllowed) thenbegin
b := b + Webbrowser1.LocationName[i];
end;
end;
url.SaveToFile(fav + '\' + b + '.url');
finally
url.Free;
end;
end;
end.
Перевод контента на русский язык:
Цель этого кода - добавить текущую страницу, отображаемую в компоненте TWebBrowser, в избранное пользователя.
Разбивка кода:
Множество NotAllowed содержит символы, которые не разрешены в именах файлов, и будет использовано позднее для очистки заголовка веб-страницы.
Функция Load читает значение из реестра Windows под текущим пользователем.
Функции WinDir и GetSysDir возвращают путь к директории Windows и системной директории, соответственно.
Процедура Button1Click навигирует TWebBrowser на страницу, указанную в текстовом поле.
Процедура Button2Click добавляет текущую веб-страницу в избранное пользователя.
Процедура Button2Click выполняет следующие действия:
Загружает путь к папке "Избранное" из реестра Windows с помощью функции Load.
Создает объект TStringList для хранения данных для InternetShortcut.
Добавляет несколько строк в TStringList, включая:
[InternetShortcut]: заголовок, указывающий, что это интернет-ссылка.
URL=<url>: URL веб-страницы.
WorkingDirectory=<win_dir>: путь к директории Windows.
IconIndex=0: индекс иконки для закладки.
ShowCommand=7: команда отображения для закладки (не знаю, что это делает).
IconFile=<sys_dir>\url.dll: файл иконки для закладки.
Получает заголовок веб-страницы с помощью свойства Webbrowser1.LocationName.
Очищает заголовок, удаляя символы, которые не разрешены в именах файлов, с помощью цикла.
Сохраняет данные в файле с тем же именем, что и очищенный заголовок, но с расширением .url, в папке "Избранное".
В целом, этот код quite сложен и может быть трудно понять. Вот некоторые предложения по улучшению:
Используйте константы вместо магических чисел (например, MAX_ PATH) при возможности.
Рассмотрите возможность использования отдельной функции для очистки заголовка вместо его встраивания в процедуру Button2Click.
Добавьте обработку ошибок, чтобы код не ломался, если что-то пошло не так (например, если папка "Избранное" не может быть записана).
Рассмотрите возможность использования более современного подхода, такого как использование API Windows Shell или третьей-сторонней библиотеки, для добавления закладок вместо зависимости от реестра и файлового ввода-вывода.
В ответе из окна браузера ("ты ответа не дождешься, глупый юзер, я не твой!") кажется, что браузер отвечает русским сообщением, которое примерно переводится как "ты не будешь ждать ответа, дурак, я не твоий!". Однако это сообщение, вероятно, является не связанным с кодом, который вы предоставили, и может быть вызвано другими причинами.
Добавить текущую страницу TWebBrowser в Избранное: код на Delphi, позволяющий добавлять адрес текущей открытой страницы в избранное.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.