В этой статье я хотел бы описать полезную недокументированную  функцию GetTaskmanWindow. Функция GetTaskmanWindow возвращает дескриптор

окна, которое владеет кнопками панели задач. Вот цитата о панели задач из Microsoft MSDN:  "Программа Microsoft® для Windows® интерфейс, включающий приложение

панель называется панелью задач. Панель задач может использоваться для выполнения таких задач, как переключение между открытыми Windows и запуск новых приложений..." и "панель задач содержит меню Пуск, кнопки панели задач,  контекстное меню и панель состояния...". К сожалению, Win32 API не содержит документированных функций, которые могут быть использованы для доступа к задач, поэтому мы должны снова использовать недокументированный способ.

Code:

{

 Here is the prototype for GetTaskmanWindow:

   function GetTaskmanWindow (): HWND;

 As always, Microsoft doesn't provide us with the exports symbols

in the User32.lib for this function, so we should load them dynamically using the

GetProcAddress and GetModuleHandle functions:

}

 

// getaskmanwnd.cpp (Windows NT/2000)

// This example will show you how you can obtain a handle to the

// Windows Taskbar window.

// Translated from C to Delphi by Thomas Stutz

// Original Code: Ashot Oganesyan K, SmartLine, Inc

 

 

function TaskmanWindow: HWND;

type

  TGetTaskmanWindow = function(): HWND; stdcall;

var

  hUser32: THandle;

  GetTaskmanWindow: TGetTaskmanWindow;

begin

  Result := 0;

  hUser32 := GetModuleHandle('user32.dll');

  if (hUser32 > 0) then

  begin

    @GetTaskmanWindow := GetProcAddress(hUser32, 'GetTaskmanWindow');

    if Assigned(GetTaskmanWindow) then

    begin

      Result := GetTaskmanWindow;

    end;

  end;

end;

 

procedure ShowTaskmanWindow(bValue: Boolean);

var

  hTaskmanWindow: Hwnd;

begin

  hTaskmanWindow := TaskmanWindow;

  if hTaskmanWindow <> 0 then

  begin

    ShowWindow(GetParent(hTaskmanWindow), Ord(bValue));

  end;

end;

 

// Example to Hide the Taskman Window

procedure TForm1.Button1Click(Sender: TObject);

begin

  ShowTaskmanWindow(False);

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить