Ошибка: Failed to parse the Currency Converter XML document.
$58 537.36


Ошибка: Failed to parse the Currency Converter XML document.
$28 628.29


Ошибка: Failed to parse the Currency Converter XML document.
$19 044.92


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

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

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

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

 

Интересное

Какой должен быть сайт
В российском интернете уже существует десятки, а то и сотни тысяч сайтов, но лишь несколько сотен действительно достойны внимания пользователя. Интернет в России реально действует только два-три...
Подробнее...
Стандарт доступности...
По мере роста аудитории Интернета, вопрос цифрового равенства становится все более важным. Пользователи с ограниченными возможностями не должны быть лишены доступа к содержимому сайтов в...
Подробнее...
Применение терминала сбора...
Терминал сбора данных - функциональное устройство, предназначенное для управления товарооборотом. К потребителю он попадает вместе со встроенным сканером, позволяющим распознавать многочисленные...
Подробнее...
Десять советов по...
Использование всевозможных технологий удаленного администрирования рабочих станций позволяет существенно сэкономить время и деньги. Ниже приводятся некоторые советы, которые помогут читателям в...
Подробнее...
Externet VPN: технология...
Современный телекоммуникационный рынок предлагает пользователю множество решений, призванных сделать различные типы связи более доступными, удобными и надежными. Сегодня одной из самых интересных...
Подробнее...
Как узнать информацию о...
Вы, возможно, видели нестандартные дельфийские компоненты, позволяющие сделать лог системы. Сейчас мы самостоятельно реализуем что-нибудь не хуже.Прежде всего, где хранится эта самая системная...
Подробнее...
Безопасность. Какой вопрос...
Думаю, у каждого при чтении специализированной литературы возникали вопросы по поводу тех или иных терминов. Но, как правило, поблизости обычно нет того, кто может объяснить их значение. Проблемы...
Подробнее...
Вопросы по графике и...
Какой графический формат (GIF или JPEG) лучше использовать для графики в веб и почему? Если ваша картинка содержит немного цветов и/или четкие линии — лучше использовать GIF т.к. его палитра...
Подробнее...
Как обнаружить утечку памяти
При разработке больших приложений, оперирующих большими объемами информации на первое место при отладке встает проблема обнаружения неправильного распределения памяти. Суть проблемы состоит в том,...
Подробнее...
Хранилище шаблонов...
Если вы так или иначе сталкиваетесь с AD (Active Directory), то вам наверняка приходилось иметь дело с политикой групп (Group Policy). Одним из основных компонентов объектов политики групп (Group...
Подробнее...