:: MVP ::
|
|
:: RSS ::
|
|
|
Наверняка вы знаете что у виндового Диспетчера задач есть (и уже очень давно, еще со времен Windows 2000)
компактный режим, так называемый "Tiny Footprint Mode", в котором у окна пропадает заголовок, вкладки и меню.
Для переключения в этот режим (и обратно) достаточно дважды кликнуть на любом свободном месте окна. В компактном
режиме функциональность окна сохраняется, переключаться между вкладками можно с помощью клавиатуры, использую
комбинацию клавиш Ctrl + Tab.
Изначально режим "Tiny Footprint Mode" был спроектирован для пользователей, которые хотели бы использовать
Диспетчер задач в виде виджета на рабочем столе, например, такого:
Ситуацию немного омрачает лишь то, что в Windows нет штатных настроек для того, чтобы Диспетчер задач сразу
запускался в компактном виде. Но оказывается, путем несложных манипуляций с бинарным параметром Preferences,
находящемся в системном реестре в ключе "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\TaskManager",
ситуацию можно исправить! За внешний вид Диспетчер задач отвечает 4-й бит в байте по адресу $320. Если бит сброшен,
то окно отображается в обычном режиме, если установлен - в режиме "Tiny Footprint Mode" (проверено на Windows 7
Professional SP1).
Ниже пример небольного приложения, которое манипулируя указанным выше битом меняет вид окна Диспетчера задач
при запуске.
uses
Registry, ShellAPI;
function IsTinyFootprintMode: Boolean;
function IsBitSet(Value: Cardinal; Bit: Byte): Boolean;
begin
Result := ((Value shr Bit) and 1) = 1;
end;
var
Reg: TRegistry;
Buf: array of Byte;
BufSize: Integer;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKeyReadOnly('Software\Microsoft\Windows NT\CurrentVersion\TaskManager');
BufSize := Reg.GetDataSize('Preferences');
SetLength(Buf, BufSize);
Reg.ReadBinaryData('Preferences', Buf[0], BufSize);
Result := IsBitSet(Buf[$320], 4);
finally
Reg.CloseKey;
FreeAndNil(Reg);
end;
end;
procedure ToggleTinyFootprintMode(const Enable: Boolean);
function BitOn(const Value: LongInt; const Bit: Byte): LongInt;
begin
Result := Value or (1 shl Bit);
end;
function BitOff(const Value: LongInt; const Bit: Byte): LongInt;
begin
Result := Value and not (1 shl Bit);
end;
var
Reg: TRegistry;
Buf: array of Byte;
BufSize: Integer;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\TaskManager', False);
BufSize := Reg.GetDataSize('Preferences');
SetLength(Buf, BufSize);
Reg.ReadBinaryData('Preferences', Buf[0], BufSize);
case Enable of
True: Buf[$320] := BitOn(Buf[$320], 4);
False: Buf[$320] := BitOff(Buf[$320], 4);
end;
Reg.WriteBinaryData('Preferences', Buf[0], BufSize);
finally
Reg.CloseKey;
FreeAndNil(Reg);
end;
end;
procedure TTaskmgrModeForm.Button1Click(Sender: TObject);
begin
ToggleTinyFootprintMode(True);
end;
procedure TTaskmgrModeForm.Button2Click(Sender: TObject);
begin
ToggleTinyFootprintMode(False);
end;
procedure TTaskmgrModeForm.Button3Click(Sender: TObject);
begin
case IsTinyFootprintMode of
True: ShowMessage('Режим Tiny Footprint включен');
False: ShowMessage('Режим Tiny Footprint выключен');
end;
end;
procedure TTaskmgrModeForm.Button4Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', 'taskmgr.exe', '', '', SW_SHOWNORMAL);
end;
|
На этом все, удачи!
.: Пример к данной заметке :.
|
При использовании материала - ссылка на сайт обязательна
|
|