Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Картинка рабочего стола [D7, WinXP]


kotbazilio ©   (17.08.07 11:15

Помогите с таким вопросом. Код ниже ставит картинку на рабочий стол из того каталога, в котором прога. Но при варианте, когда путь содержит русские папки - ничего не происходит. Помогите разобраться.

procedure ChangeActiveWallpaper;
const
 CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
 ActiveDesktop: IActiveDesktop;
 s: string;
 wideChars: array[0..255] of WideChar;
begin
 s := GetCurrentDir+'\wallpaper.html';
 StringToWideChar(s, wideChars, 255);
 ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
 ActiveDesktop.SetWallpaper(widechars, 0);
 ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;


Lacmus ©   (17.08.07 12:07[1]

Проблема на Windows XP не повторяется, картинка меняется, в проверке использовался не html, а jpg.


kotbazilio ©   (17.08.07 12:14[2]

ну во-первых интересует именно html, во-вторых попробуй запустить из какого- нибудь d:\русская папка. Не сработает.


Lacmus ©   (17.08.07 12:17[3]

Проверяемый код



procedure ChangeActiveWallpaper;
const
CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
ActiveDesktop: IActiveDesktop;
s: string;
wideChars: array[0..255] of WideChar;
begin
s := 'C:\Русский каталог\Autumn.jpg';
StringToWideChar(s, wideChars, 255);
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
ActiveDesktop.SetWallpaper(widechars, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;

procedure TForm40.Button1Click(Sender: TObject);
begin
 ChangeActiveWallpaper
end;


kotbazilio ©   (17.08.07 12:21[4]

Когда ставится статическая картинка - это несколько иная история.. Мне нужно html и в ней ембеднут флеш объект.


kotbazilio ©   (17.08.07 12:23[5]

Я так понимаю проблема где-то в этом месте
s := GetCurrentDir+'\wallpaper.html';
StringToWideChar(s, wideChars, 255);
Но объяснить не могу


Lacmus ©   (17.08.07 12:40[6]


StringToWideChar(s, wideChars, 255);


wideChars читаемый ?


kotbazilio ©   (17.08.07 12:42[7]

у меня да, но у меня и все работает на машине... глюк плавающий, надо вылавливать...


Lacmus ©   (17.08.07 12:48[8]

?



procedure EnableActiveDesktop(bEnabled : Boolean);
const
 CLSID_ActiveDesktop : TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
 ActiveDesktop : IActiveDesktop;
 ComponentsOpt : TComponentsOpt;
begin
 ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
 ComponentsOpt.dwSize := SizeOf(ComponentsOpt);
 ComponentsOpt.fEnableComponents := bEnabled;
 ComponentsOpt.fActiveDesktop := bEnabled;
 ActiveDesktop.SetDesktopItemOptions(ComponentsOpt, 0);
 ActiveDesktop.ApplyChanges(AD_APPLY_REFRESH);
end;


kotbazilio ©   (17.08.07 12:49[9]

Ну это я делаю само собой


Lacmus ©   (17.08.07 12:51[10]

А если проверить результат ActiveDesktop.SetWallpaper ?


kotbazilio ©   (17.08.07 12:53[11]

Посмотрю,.. но проблема мне кажется в конвертации пути в юникод


goggu   (21.10.14 22:21[12]

Удалено модератором


DQ   (21.10.14 22:35[13]

Удалено модератором


Maks Maksimov   (21.10.14 23:30[14]

Удалено модератором


DQ   (22.10.14 15:27[15]

Удалено модератором


версия для печати
Обсуждение закрыто


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо