Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рабочий стол 
:(
    Опции темы
Madrid
Дата 2.12.2006, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.5.2006

Репутация: нет
Всего: нет



Всем привет!
А можно в С# как-нибудь до десктопа добраться!
К примеру нарисовать что-нибудь или обои поменять?


PM MAIL   Вверх
Naum
Дата 2.12.2006, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Цитата(http://winmain.ru/modules.php?name=KB&myfaq=yes&id_cat=1&categories=Windows+32+API#20)
Как сменить обои на рабочем столе? 
 
Нет ничего проще. Достаточно вызвать функцию 
BOOL SystemParametersInfo(
  UINT uiAction,  // Системный параметр, который требуется получить или установить
  UINT uiParam,   // Зависит от действия, которое будет принято
  PVOID pvParam,  // Зависит от действия, которое будет принято
  UINT fWinIni    // Опция обновления профиля пользователя.
);
В нашем случае, в качестве первого параметра требуется передать SPI_SETDESKWALLPAPER, второй должен быть равен нулю, в качестве третьего параметра выступает полный путь и имя файла, который будет являться новым рисунком рабочего стола, последний параметр отвечает за обновление профиля пользователя, если он равен нулю, то обновления не происходит, а если параметру SPIF_SENDCHANGE то происходит обновление профиля пользователя. Если же вы хотите наоборот убрать обои с рабочего стола, то все параметры остаются без изменений, а в качестве имени файла указывается NULL. Краткий пример использования: 
int main()
{
    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:WinNTЯпонский мотив.bmp", SPIF_SENDCHANGE); 
return 0;
}



Это сообщение отредактировал(а) Naum - 2.12.2006, 10:06


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Madrid
Дата 2.12.2006, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.5.2006

Репутация: нет
Всего: нет



В C# нет функции SystemParametersInfo.
Ну или я по крайней мере не нашёл.
PM MAIL   Вверх
Naum
Дата 2.12.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Также можно рисовать на рабочем столе с помощью Graphics. Ведь у рабочего стола тоже есть свой дескриптор, а у класса Graphics есть статический метод FromHwnd(System.IntPtr hwnd), который в качестве параметра принимает этот самый дескриптор. Только в XP он, по-моему, постоянно меняется. У меня сейчас, например, 0х0001008E.

Добавлено @ 10:39 
Цитата(Madrid @  2.12.2006,  11:16 Найти цитируемый пост)
В C# нет функции SystemParametersInfo.

Это WinApi-функция. 


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Madrid
Дата 2.12.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.5.2006

Репутация: нет
Всего: нет



Вызов функции из API - это единственный способ?
PM MAIL   Вверх
Naum
Дата 2.12.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



По-моему да.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Madrid
Дата 2.12.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.5.2006

Репутация: нет
Всего: нет



А как  можно получить дескриптор рабочего стола?
PM MAIL   Вверх
ivashkanet
Дата 2.12.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Цитата(Madrid @  2.12.2006,  10:18 Найти цитируемый пост)
А как  можно получить дескриптор рабочего стола? 

Это тоже будет через WinAPI, ИМХО.
Если нужен пример на SystemParametersInfo  Смена картинки рабочего стола 
PM MAIL WWW ICQ   Вверх
DarkDragon
Дата 4.12.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 3
Всего: 8



Цитата(Madrid @  2.12.2006,  11:18 Найти цитируемый пост)
А как  можно получить дескриптор рабочего стола? 


Код

   [DllImport ("user32.dll")]
   public static extern IntPtr GetDesktopWindow ();


Цитата(Madrid @  2.12.2006,  11:12 Найти цитируемый пост)
Вызов функции из API - это единственный способ? 

Ну возможно не единственный, можно еще через асм, но он тебе уж точно не понравится. Так что лучше пользоваться АПИ, ведь он для этого и существует(чтобы им пользовались).
PM MAIL   Вверх
Vanek
Дата 10.12.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



А как в C# можно обработать jpeg (там вроде, возникают дополнительные сложности)?
PM MAIL   Вверх
mr.DUDA
Дата 10.12.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Цитата(Vanek @  10.12.2006,  16:58 Найти цитируемый пост)
А как в C# можно обработать jpeg (там вроде, возникают дополнительные сложности)?

Никаких сложностей, есть класс Bitmap для загрузки/сохранения и класс Graphics для рисования.


--------------------
user posted image
PM MAIL WWW   Вверх
_LOTOS_
  Дата 9.2.2007, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.2.2007

Репутация: нет
Всего: нет



Цитата

Вызов функции из API - это единственный способ?


Ответ отрицательный smile

http://articles.org.ru/cfaq/index.php?qid=...mmostrecent=yes (там в частности про смену обоев рабочего стола)

Ну может и не фонтан... но зачем жа так своим ответом человека в угол загонять? smile
PM MAIL   Вверх
Naum
Дата 12.2.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Цитата(http://articles.org.ru/cfaq/index.php?qid=1680&frommostrecent=yes)
Затем правой кнопкой мыши щелкните по рабочему столу и выберите из меню пункт "Обновить".

Интересно, как ты будешь это делать без WinAPI?  smile 
А если уж разговор пошел о таких "нефонтанах", ладно - можно без WinAPI изменить обои рабочего стола.
Код

System.IO.File.Copy(IWantThisDesktopImage + ".bmp", System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData + "\\Microsoft\\Wallpaper1.bmp");
Microsoft.VisualBasic.Interaction.Shell("shutdown -r"); //:)




--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.