uses
Inifiles, ShellApi;
procedure TForm1.Button1Click(Sender: TObject);
var
Ini: TInifile;
ScreenSaverFile: string;
function GetLongFileName(const FileName: string): string;
var
aInfo: TSHFileInfo;
beginif SHGetFileInfo(PChar(FileName), 0, aInfo, SizeOf(aInfo), SHGFI_DISPLAYNAME) <> 0 then
Result := string(aInfo.szDisplayName)
else
Result := FileName;
end;
begin
Ini := TInifile.Create('system.ini');
ScreenSaverFile := GetLongFileName(Ini.Readstring('boot', 'SCRNSAVE.EXE', 'Not Available'));
Ini.Free;
label1.Caption := ScreenSaverFile;
end;
Вот перевод текста на русский язык:
Это код Delphi, который извлекает установленный по умолчанию экран-сейвер на системе. Вот разбивка того, что код делает:
Процедура Button1Click вызывается при клике кнопки на форме.
Создается экземпляр класса TInifile, представляющего собой файл INI, и присваивается переменной Ini.
Определена функция GetLongFileName, которая конвертирует длинное имя файла в короткое. Это полезно потому что Delphi использует разные названия для файлов в зависимости от того, находится ли они в корневом каталоге или нет.
Код читает значение из файла INI с именем "system.ini" и присваивает его переменной ScreenSaverFile. Значение, которое читается, это путь к экран-сейверу по умолчанию, хранящемуся под ключом "SCRNSAVE.EXE" в разделе "boot" файла INI.
Если значение не может быть прочитано из файла INI (т.е. если оно не доступно), код по умолчанию присваивает строковое литеральное значение "Not Available".
Функция GetLongFileName вызывается с аргументом значения ScreenSaverFile, и результат хранится в ScreenSaverFile. Это конвертирует длинное имя файла в короткое.
Наконец, код устанавливает заголовок метки на форме (Label1) значением ScreenSaverFile, эффективно отображая путь к экран-сейверу по умолчанию.
Вот альтернативное решение, использующее встроенные функции Delphi для извлечения экран-сейвера:
В этом коде мы используем функцию SHGetKnownFolderPath для извлечения пути к каталогу экран-сейверов. Если путь не пуст, мы устанавливаем заголовок метки на форму; иначе, мы по умолчанию присваиваем строковое литеральное значение "Not Available". Это подход более компактный и легче для чтения, чем оригинальный код.
В статье описывается функция, которая получает установленный по умолчанию экранное сохранение (Screen Saver) из файла system.ini и отображает его в виде текстового сообщения на форме приложения.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS