Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

Смена обоев на рабочем столе.   Найти похожие ветки 

 
Ugrael ©   (2004-11-12 11:46) [0]

Доброго времени суток.
Дабы разобраться хочу еаписать типовой сменщик обоев\календарь на рабочий стол.Столкнулся с такой проблемой-из тутошнего FAQ взял код по изменению обоев. Запускаю - визуально ничего не происходит, хотя в свойствах рабочего стола обои меняются.
Может где чего обновить(refresh)надо ?
у меня XP+StyleXP. Но ведь остальные проги работают ?


 
S@lik ©   (2004-11-12 11:55) [1]

вот у меня работает отлично

uses
 ComObj, ShlObj;

procedure ChangeActiveWallpaper;
const
 CLSID_ActiveDesktop: TGUID = "{75048700-EF1F-11D0-9888-006097DEACF9}";
var
 ActiveDesktop: IActiveDesktop;
begin
 ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)
   as IActiveDesktop;
 ActiveDesktop.SetWallpaper("c:\windows\forest.bmp", 0);
 ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;


 
-=SS=- ©   (2004-11-12 13:07) [2]

Или так

procedure ChangeWallpaper(bitmap: string);       {имя файла с изображением: *.bmp}
var pBitmap : pchar;
begin
bitmap:=bitmap+#0;
pBitmap:=@bitmap[1];
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pBitmap, SPIF_UPDATEINIFILE);
end;


 
Ugrael ©   (2004-11-12 13:23) [3]

вариант от S@lik у меня работает, кроме одного нюанса - если я явно указываю путь к файлу. А мне надо что бы ну хотя бы через opendialog.filename. Вот тут возникает проблема - пишкт что тип string а нужен pwidechar.
уж извините за глупые вопросы ...


 
-=SS=- ©   (2004-11-12 13:26) [4]

Ну так в чем проблемы
Var
 S:String;
begin
 ....
 S:=OpenDialog1.FileName;
 ActiveDesktop.SetWallpaper(PWideChar(S), 0);
поидее должно работать


 
Ugrael ©   (2004-11-12 13:51) [5]

мистика, компилятор пропускает, но не работает. а если вывести пенременную S то там такая абракадабра... это же врое как Unicod ?


 
S@lik ©   (2004-11-12 14:01) [6]

procedure ChangeActiveWallpaper(S:string);
const
CLSID_ActiveDesktop: TGUID = "{75048700-EF1F-11D0-9888-006097DEACF9}";
var
ActiveDesktop: IActiveDesktop;
begin
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)
  as IActiveDesktop;
ActiveDesktop.SetWallpaper(s, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;

Вызываеш процедуру вот так
if OpenDialog1.Execute then
ChangeActiveWallpaper(OpenDialog1.FileName);


 
Ugrael ©   (2004-11-12 14:44) [7]

всех уже достал наверное 8)
ActiveDesktop.SetWallpaper(s, 0)
в этой строчке пишет что несовместимые типы .
а если сделать pwidechar(s) - проходит, но не кажет.


 
S@lik ©   (2004-11-12 15:16) [8]

попробуй Pchar(s)


 
Ugrael ©   (2004-11-12 15:45) [9]

требует pwidechar. Что это за хрень ?!
и еще - пример из FAQ и пример -=SS=- заработали. в них понимается только формат BMP. а стандартно винда понимает ведь JPG. Да и в твоем (S@lik ©) примере если явно указать jpg все работает. если давать переменные , то см. самую первую строку.


 
Ugrael ©   (2004-11-12 16:02) [10]

млин, все, разобрался. для получения pwidechar из string используем функцию function StringToOleStr(const Source: string): PWideChar;



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
1-1102919256
dream
2004-12-13 09:27
2004.12.26
Извлечение текста из строки до определёного символа и после


1-1102587491
Aleks
2004-12-09 13:18
2004.12.26
как передать фокус и узнать код символа


6-1097731224
Дмитрий Ботвин
2004-10-14 09:20
2004.12.26
FTP-клиент


3-1101429911
Apophis
2004-11-26 03:45
2004.12.26
DBNavigator - как определить, какая из кнопок была нажата?


1-1102784356
AdmeraL
2004-12-11 19:59
2004.12.26
requires





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский