Консультация № 105396
14.10.2007, 11:36
0.00 руб.
0 2 2
Добрый день!
Как открыть все скрытые значки в трее. То есть нужно полностью убрать ту кнопку, которая скрывает редкоиспользумые программы, и показать все трейные значки.

Обсуждение

Неизвестный
14.10.2007, 21:12
общий
это ответ
Здравствуйте, Red Spirit!

Чтобы добиться данного эффекта, Вам необходимо просто сделать изменения в реестре.
В разделе <b>HKEY_CURRENT_USER\Software\Microsoft\Windows \CurrentVersion\Policies\Explorer</b>
Создать ключ с типом REG_DWORD и именем <i><b>EnableAutoTray</b></i> и задать ему значение равное <i><b>1</b></i>. Чтобы снять ограничение достаточно удалить данный ключ либо изменить значение на <i><b>0</b></i>.

А теперь, как это сделать путем программы:
<code>var reg:tregistry;
s:string;
....
reg:=TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
s:=‘Software\Microsoft\Windows\CurrentVersion\Explorer‘;
with reg do
begin
openkey(s,true);
WriteInteger(‘EnableAutoTray‘,1)
CloseKey;
Free;
end;
...</code>

Также не забудьте подключить модуль <b>Registry</b> (uses Registry;).

<i>Замечание: Для того , чтобы значение ключа вступило в силу - необходимо перегрузить машину.</i>

Good Luck!!!
Неизвестный
16.10.2007, 15:58
общий
это ответ
Здравствуйте, Red Spirit!
Учитывая Ваш комментарий к оценке ответа эксперта Ghostik (в вопросе Вы писали, что нужно полностью убрать кнопку), я написал код, иллюстрирующий то, что Вы сказали, буквально по словам :)
<code>
procedure TForm1.Button1Click(Sender: TObject);
var
TrayWnd, TrayNWnd, ButtonWnd: HWND;
begin
TrayWnd := FindWindow(‘Shell_TrayWnd‘, nil);//handle системного трея
TrayNWnd := FindWindowEx(TrayWnd, 0, ‘TrayNotifyWnd‘, nil);//handle области уведомлений
ButtonWnd := FindWindowEx(TrayNWnd, 0, ‘Button‘, nil);//handle кнопки (она там одна)
PostMessage(ButtonWnd, WM_LBUTTONDOWN, 0, 0);//посылаем сообщение нажатия
PostMessage(ButtonWnd, WM_LBUTTONUP, 0, 0);//и отпускания левой кнопки мыши
end;
</code>
Форма ответа