Приложения для Windows 10 Store, упакованные в формате APPX, работают в изолированной среде с ограниченными возможностями доступа к системным ресурсам. Это означает, что некоторые функции, доступные для традиционных приложений, могут быть недоступны или работать по-другому. В частности, установка фонового изображения рабочего стола через системные параметры (SystemParametersInfo) может не работать в APPX-пакетах из-за ограничений, наложенных на доступ к системным настройкам.
Подтвержденный ответ:
Разработчики столкнулись с проблемой установки фонового изображения рабочего стола в приложениях, упакованных как APPX для Windows 10 Store, используя Delphi и FireMonkey. Обычный подход с использованием SystemParametersInfo не работал в изолированной среде APPX. Однако, было предложено использовать метод TrySetWallpaperImageAsync из UserProfilePersonalizationSettings, который предназначен для работы в UWP-приложениях.
Шаги для решения проблемы:
Используйте метод TrySetWallpaperImageAsync из UserProfilePersonalizationSettings для установки фонового изображения. Этот метод предназначен для использования в UWP-приложениях и должен работать в изолированной среде APPX.
Для передачи изображения в метод TrySetWallpaperImageAsync необходимо использовать объект IStorageFile, который представляет файл в изолированном хранилище UWP.
Файл должен быть доступен в изолированном хранилище приложения или выбран через файловый пиcker, так как прямой доступ к файлам за пределами приложения не поддерживается.
Пример кода на Object Pascal (Delphi):
Uses WinAPI.WinRT, WinApi.SystemRT, WinAPI.Storage, WinApi.Foundation.Types;
procedure TForm1.Button1Click(Sender: TObject);
var
StorageFile: IStorageFile;
begin
if TUserProfile_UserProfilePersonalizationSettings.IsSupported then
begin
// Получение StorageFile из файла в приложении
StorageFile := TStorageFile.CreateFromPath( 'path\to\your\image.jpg' );
// Установка фонового изображения
TUserProfile_UserProfilePersonalizationSettings.Current.TrySetWallpaperImageAsync( StorageFile );
end;
end;
Альтернативный ответ:
Если использование TrySetWallpaperImageAsync по каким-то причинам невозможно, можно рассмотреть возможность копирования изображения в локальную папку приложения, а затем установить его как фоновое изображение из этой папки.
Заключение:
При разработке приложений для Windows 10 Store важно учитывать ограничения, наложенные на APPX-пакеты. Использование методов, предназначенных для UWP-приложений, таких как TrySetWallpaperImageAsync, является ключом к решению проблемы установки фонового изображения рабочего стола в таких приложениях.
Проблема заключается в невозможности установки фонового изображения рабочего стола через стандартные системные вызовы в приложениях для Windows 10 Store, упакованных в формате APPX, из-за ограничений изолированной среды, и требуется использовать специаль
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS