(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Работаем с рабочим столом

Источник: pcnext
Darkmaster

Привет! Сегодня мы будем работать с тем, что постоянно видим на экране своего монитора, а именно со своим рабочим столом. Не буду сильно болтать о том о сем а сразу же начну с полезных примеров. Для начала давайте разберемся как можно обновить рабочий стол. Я знаю целых два способа для этого. Вот первый из них:

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(FindWindow('Progman', 'Program Manager'),
WM_COMMAND,
$A065,
0);
end;

Вот второй способ:

procedure TForm1.Button1Click(Sender: TObject);
var
hDesktop: HWND;
begin
hDesktop := FindWindowEx(FindWindowEx(
FindWindow('Progman', 'Program Manager'), 0,
'SHELLDLL_DefView', ''), 0, 'SysListView32', '');
PostMessage(hDesktop, WM_KEYDOWN, VK_F5, 0);
PostMessage(hDesktop, WM_KEYUP, VK_F5, 1 shl 31);
end;

Теперь давайте разберемся как можно при помощи Делфи установить на рабочий стол свои собственные обои. При этом надо учитывать, что картинка должна быть в формате bmp. Вот как это делается:

SystemParametersInfo(SPI_SetDeskWallpaper,0,Pchar('обоина'),SPIF_UPDATEINIFILE);

В данном примере естественно вместо слова обоина нужно вписать путь к bmp-шке. Теперь давайте вызовим окно завершения работы Windows. Вот код:

SendMessage (FindWindow ('Progman', 'Program Manager'), WM_CLOSE, 0, 0);

Теперь давайте разберемся как можно выровнять иконки по левую сторону рабочего стола. Для начала нам нужно получить дескриптор рабочего стола, который является обычным ListView. Вот получение его:

function GetDesktopListViewHandle: THandle;
var
S: String;
begin
Result := FindWindow('ProgMan', nil);
Result := GetWindow(Result, GW_CHILD);
Result := GetWindow(Result, GW_CHILD);
SetLength(S, 40);
GetClassName(Result, PChar(S), 39);
if PChar(S) <> 'SysListView32' then Result := 0;
end;

Теперь можно работать с этим дескриптором при помощи API:

SendMessage(GetDesktopListViewHandle,LVM_ALIGN,LVA_ALIGNLEFT,0);

Вот эта строка и выравнивает иконки по левому краю. Сейчас я научу вас скрывать/показывать иконки которые расположены на рабочем столе. Делается это вот каким способом, для начала мы создадим процедуру, а потом запустим ее с разными параметрами, вот эта процедура:

procedure ShowDesktop(const YesNo : boolean);
var h : THandle;
begin
h := FindWindow('ProgMan', nil);
h := GetWindow(h, GW_CHILD);
if YesNo = True then
ShowWindow(h, SW_SHOW)
else
ShowWindow(h, SW_HIDE);
end;

Теперь нам надо вызвать нашу процедуру. Если вы хотите скрыть иконки на рабочем столе то вызовете:

ShowDesktop(false);

Если вам надо показать иконки то:

ShowDesktop(true);

Теперь две функции не очень на прямую относящиеся к рабочему столу, но описать их мне хочется здесь и сейчас. Первая это зачем парится со всеми иконками когда можно просто отключить монитор:

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);

Если хотите включить монитор то вместо 0 ставьте 1. Ну, и наконец в этой статье мы вызывали окно завршения работы Windows. Давайте теперь просто перезагрузим нашу систему:

ExitWindows(EW_RESTARTWINDOWS, 0 );

Можно вместо EW_RESTARTWINDOWS писать:

EW_RESTARTWINDOWS
EW_REBOOTSYSTEM
EW_EXITANDEXECAPP

Вот и все, что я хотел сегодня вам рассказать.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 18.12.2006 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER ANNUAL SW SUBSCRIPTION & SUPPORT RENEWAL
WinRAR 5.x 1 лицензия
SmartBear Collaborator - Named User License (Includes 1 Year Maintenance)
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER LICENSE + SW SUBSCRIPTION & SUPPORT 12 MONTHS
ABViewer Standart пользовательская
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Новые материалы
Работа в Windows и новости компании Microsoft
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100