$1 135.89


$49.19


$53.71


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

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

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

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

 

Интересное

Перевод программ под Windows
Для перевода программ под windows используются редакторы ресурсов, которых развелось достаточно много. Самые лучшие, на мой взгляд, resurs hacker и restorator. У каждой из них есть свои плюсы и...
Подробнее...
Антивирус - религия?
Представители «комплексной защиты» забывают добавить, что защищен не от всего и не всегда. И защищен только тот, кто сможет их продукт настроить должным образом. Почемуто считается, что если...
Подробнее...
Я работаю с Windows Vista....
Шаг за шагом знакомимся с Windows Vista. Сегодня — подробно о том, сколько и какого «железа» требуется для работы с разными версиями новой операционной системы.
Подробнее...
Кто и как выманивает...
Пару лет назад стандартный набор распространенных интернет-угроз пополнился еще одним видом криминала. В прессе все чаще стало мелькать слово «фишинг» (phishing), под которым поначалу...
Подробнее...

Авторизация






Windows 2003 на домашнем...
Последний представленный компанией Microsoft продукт — семейство Windows 2003 - является прямым продолжением Windows 2000. Эта система предназначена, в основном, для серверного, а не для домашнего...
Подробнее...
Реальный домен виртуальной...
Краткая хронологияПроцедура регистрации домена .SU была инициирована в середине августа 1990 года, до окончательной регистрации дело дошло 19 сентября. Забавно, что почти ровно через год произошли...
Подробнее...
Интерфейс командной строки
Итак, консоль командной строки присутствует во всех версиях операционных систем Windows. Ранние версии ОС поддерживали режим MS-DOS напрямую, что позволяло выполнять простые команды прямо из...
Подробнее...
ШРИФТ
Удобочитаемость шрифта.Удобочитаемость является одним из важнейших достоинств хорошего шрифта. Это не только общая оценка пригодности его формы, но и показатель красоты. На удобочитаемость влияют...
Подробнее...
Основы позиционирования блоков
Блоки — прямоугольные области, используемые в CSS для формирования и отображения документов. Это упрощенно, очень сильно упрощенно, но для начала вполне может и хватить.С появлением нового...
Подробнее...
CSS вёрстка: учимся сами
Время от времени в мой почтовый ящик приходит очередное письмо, содержащее всего одну просьбу: меня просят рассказать о неком алгоритме изучения «блочной» вёрстки. Настало время...
Подробнее...