Конференция "Corba" » Картинка рабочего стола [D7, WinXP]
 
  • kotbazilio © (17.08.07 11:15) [0]
    Помогите с таким вопросом. Код ниже ставит картинку на рабочий стол из того каталога, в котором прога. Но при варианте, когда путь содержит русские папки - ничего не происходит. Помогите разобраться.

    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]
    неплохо! а на счет картинок могу рекомендовать сайт с хорошими обоями на разную тематику www.anywalls.com/new/
  • DQ (21.10.14 22:35) [13]
    Как бэ... Vista, Seven & 8 не поддерживают HTML-страницу на рабочем столе.
  • Maks Maksimov (21.10.14 23:30) [14]
    Цена вечности в каждом мгновении жизни (картинка)http://www.kartinkijane.ru/71861-les-derevya-xvojnye-paportnik.html
  • DQ (22.10.14 15:27) [15]
    амм... И чего? О_о
 
Конференция "Corba" » Картинка рабочего стола [D7, WinXP]
Есть новые Нет новых   [118598   +13][b:0][p:0.001]