![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
включить auto-hide taskbar на Делфи [D7]
Ландграф Павел © (2005-09-01 12:11:00)Подскажите как программно включить/выключить эту опцию, при условии совместимости со всеми версиями начиная с 98.
Ландграф Павел (2005-09-03 18:36:00) [1]СенькЫсь! под 98 буду отдельно писать.. или плюнуть на них!?=)
Турист (2005-09-03 16:34:00) [2]:-)
procedure HardAutoHideTaskBar(aAutoHide: Boolean);
var
bNewState: Byte;
Buffer: array[0..255] of Byte;
hExplorer: THandle;
dwExplorerID: DWord;
dwSettingsSize: DWord;
begin
with TRegistry.Create do try
if OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2', False) or
OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects', False) then begin
dwSettingsSize := ReadBinaryData('Settings', Buffer, SizeOf(Buffer));
if (dwSettingsSize > 0) then begin
if aAutoHide then
bNewState := Buffer[8] or 1
else
bNewState := Buffer[8] and not 1;
if bNewState <> Buffer[8] then begin
Buffer[8] := bNewState;
WriteBinaryData('Settings', Buffer, dwSettingsSize);
end
end
end
finally
Free
end;
if GetWindowThreadProcessId(FindWindow('Shell_TrayWnd', nil), dwExplorerID) <> 0 then begin
hExplorer := OpenProcess(SYNCHRONIZE or PROCESS_TERMINATE, FALSE, dwExplorerID);
if hExplorer <> 0 then try
TerminateProcess(hExplorer, 0)
finally
CloseHandle(hExplorer)
end
end;
if GetWindowThreadProcessId(FindWindow('Shell_TrayWnd', nil), dwExplorerID) = 0 then
WinExec('explorer.exe', SW_SHOWNORMAL)
end;
Турист (2005-09-03 13:27:00) [3]>Турист (03.09.05 12:56) [5]
К сожалению, для Windows XP
Турист (2005-09-03 12:56:00) [4]Вроде работает
const
ABM_SETSTATE = $0000000a;
procedure AutoHideTaskBar(aAutoHide: Boolean);
var
BarData: TAppBarData;
dwState, dwNewState: DWord;
begin
FillChar(BarData, SizeOf(BarData), 0);
BarData.cbSize := SizeOf(BarData);
dwState := SHAppBarMessage(ABM_GETSTATE, BarData);
if aAutoHide then
dwNewState := dwState or ABS_AUTOHIDE
else
dwNewState := dwState and not ABS_AUTOHIDE;
if dwState <> dwNewState then begin
BarData.lParam := dwNewState;
SHAppBarMessage(ABM_SETSTATE, BarData)
end
end;
Ландграф мобил=) (2005-09-02 19:50:00) [5]Нашел, но в каждой винде по разному=(
xmed (2005-09-02 17:43:00) [6]тода Regedit там надо искать
Ландграф Павел (2005-09-02 17:25:00) [7]Енто не то... можешь проверить сам и найти отличия=) када SW_HIDE то эту панельку оттуда уже никак не вытащишь, а мне надо чтобы именно AUTO-hide, т.е. мышильду опускаем вниз - панелька выехала
xmed (2005-09-02 15:09:00) [8]procedure TaskBar( Turn:Boolean );
var
hTaskBar : THandle;
begin
hTaskbar := FindWindow( 'Shell_TrayWnd', Nil );
if Turn then begin
ShowWindow( hTaskBar, SW_SHOWNORMAL );
end else begin
ShowWindow( hTaskBar, SW_HIDE );
end;
end