C #: О темах и обоях в окнах, как сохранить файл slideshow.ini неизменным?

По какой-то причине я работаю над сбросом обоев с помощью SystemParametersInfo в C #. Но каждый раз, когда я проделываю эту работу, файл slideshow.ini в папке C: \ Users \ CurrentUser \ AppData \ Roaming \ Microsoft \ Windows \ Themes будет сброшен на пустой. Мне нужно, чтобы это был тот же файл, прежде чем я установлю новые обои на рабочий стол.

Есть ли какой-нибудь API или какой-либо способ сделать эту работу?

И есть ли какой-нибудь API, который может получить сообщение о темах изменения пользователя-> Отдельные обои (новые темы)?

Я пробовал WM_THEMESCHANGE и WM_PAINT, ни один из них не может удовлетворить мои потребности.

Просто измените обои, но не сбрасывайте файл slidershow.ini, который действует так же, как «Тема», измените фотографию через некоторое время и сохраните файл slideshow.ini. Спасибо за вашу помощь!


person user2345348    schedule 03.05.2013    source источник


Ответы (1)


Добавьте таймер в свой проект, интегрируйте его в код изменения обоев по умолчанию и используйте его для регулярной смены обоев. Установив для свойства readonly значение true для ini-файла, вы можете защитить его от любых изменений.

        using System.IO;

        string iniPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Windows\Themes\slideshow.ini";
        File.SetAttributes(iniPath, File.GetAttributes(iniPath) & FileAttributes.ReadOnly);
person Turgay Turk    schedule 07.06.2013