Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 20.10.2010
Сообщений: 56

Обои рабочего стола

22.11.2012, 11:03. Показов 2046. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Смена обоев приводит к просто черному рабочему столу. где то ошибка?

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button12Click(Sender: TObject);
var path: string;
begin
opendialog1.Execute;
path:=opendialog1.filename;
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)
  as IActiveDesktop;
 ActiveDesktop.SetWallpaper(addr(path), 0);
 ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
 
end;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2012, 11:03
Ответы с готовыми решениями:

Перерисовка рабочего стола
Доброго времени суток. Рисую на рабочем столе (точнее на обоях) простую линию, рисуется она замечательно, а как ее теперь стереть? ...

Часы для рабочего стола
Здравствуйте Нужна программа аналоговых часов для рабочего стола с редакцией вида. на Delphi

Как найти handle Рабочего стола?
Как найти в Delphi7 handle Рабочего стола? (это нужно, когда в проекте нет форм, и проект запускает другую программу командой...

9
16 / 16 / 6
Регистрация: 31.01.2011
Сообщений: 178
20.11.2013, 16:55
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.BitBtn2Click(Sender: TObject);
const
  CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
  ActiveDesktop: IActiveDesktop;
begin
  ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
  ActiveDesktop.SetWallpaper(' путь '  , 0);
  ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
Добавлено через 7 минут
кстати, кто подскажет че тут может не работать? в Edit1 у меня указан путь к каталогу, а в ListBox1 - имена файлов с расширениями.
проблема та же, что и в первом посте темы.


Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.ListBox1Click(Sender: TObject);
const
  CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
  ActiveDesktop: IActiveDesktop;
begin
  ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
  ActiveDesktop.SetWallpaper('Edit1.text + ListBox1.Items[ListBox1.ItemIndex]'  , 0);
  ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
Добавлено через 11 минут
причем клик по кнопке меняет обою, если путь к ней указан в коде вот так
Delphi
1
  ActiveDesktop.SetWallpaper('D:\Мои документы\Рисунки\Обои\1600х900\HP.JPG'  , 0);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,879
Записей в блоге: 12
20.11.2013, 17:12
Delphi
1
ActiveDesktop.SetWallpaper(Edit1.text + ListBox1.Items[ListBox1.ItemIndex], 0);
Разница - существенная, правда? Я надеюсь, в Edit1 - путь к папке с завершающим path delimiter-ом? Если нет - то лучше обернуть его еще функцией IncludeTrailingPathDelimiter
1
16 / 16 / 6
Регистрация: 31.01.2011
Сообщений: 178
20.11.2013, 17:50
UI, завершающий слэш к пути к директории добавлен, если вы о нем. а так, как вы указали он чето ругается... не хочет без апострофов запускаться

Incompatible types: 'TCaption' and 'PWideChar'

несовместимость типов...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,879
Записей в блоге: 12
20.11.2013, 17:56
Delphi
1
 ActiveDesktop.SetWallpaper(PChar(Edit1.text + ListBox1.Items[ListBox1.ItemIndex]), 0);
1
16 / 16 / 6
Регистрация: 31.01.2011
Сообщений: 178
20.11.2013, 18:02
теперь Incompatible types: 'Char' and 'WideChar'
0
143 / 52 / 17
Регистрация: 12.11.2013
Сообщений: 162
20.11.2013, 18:04
вместо PChar напишите StringToOleStr
1
16 / 16 / 6
Регистрация: 31.01.2011
Сообщений: 178
20.11.2013, 18:06
даааааа. теперь ставит обои. огромное спасибо, что откликнулись и помогли!
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.ListBox1Click(Sender: TObject);
const
  CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
  ActiveDesktop: IActiveDesktop;
begin
  ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
  ActiveDesktop.SetWallpaper(StringToOleStr(Edit1.text + ListBox1.Items[ListBox1.ItemIndex]), 0);
  ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,879
Записей в блоге: 12
20.11.2013, 18:12
Цитата Сообщение от Alexxandr Посмотреть сообщение
вместо PChar напишите StringToOleStr
Это еще с чего? Старьем надо меньше пользоваться (я про D7), XE+ прекрасно компилирует с PChar... В крайнем случае можно было написать там PWideChar, хотя на Юникодных версиях это и так подразумевается.
0
16 / 16 / 6
Регистрация: 31.01.2011
Сообщений: 178
20.11.2013, 18:16
Цитата Сообщение от UI Посмотреть сообщение
В крайнем случае можно было написать там PWideChar
только что попробовал. не канает. первоначальная проблема возникает. черный стол тупо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.11.2013, 18:16
Помогаю со студенческими работами здесь

Изменить положение элементов рабочего стола
Подскажите пожалуйста, можно ли программым способом изменить положение папок/файлов на рабочем столе? Например: сдвинуть папку "Мои...

Программа по смене обоев рабочего стола
Вот захотелось чет чтоб обоины менялись (причем скачивались с интернета). Искал такие программы но ни одна не подходит мне, а хотелось бы...

Почему в Delphi не видится папка рабочего стола в Windows 7?
здравствуйте пожалуйста помогите ни как не могу понять почему делфи не видит мой рабочий стол путь к нему пишу ...

Звук с микрофона и изображение с рабочего стола средствами DirectShow и Bass
Привет. Решил написать программу для работы с изображением рабочего стола и звуком с микрофона. Имеется DirectShow. Нужно отловить звук с...

Обои рабочего стола
Доброго всем времени суток. Подскажите, как можно установить РАЗНЫЕ обои на рабочие столы. На каждый стол свои.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru