1

如果 Windows 资源管理器任务栏设置为自动隐藏,我如何通过 Delphi 程序判断?

4

4 回答 4

13

在 Windows XP 及更高版本中,您可以使用消息调用SHAppBarMessageAPI 。ABM_GETSTATE

句法:

SHAppBarMessage(ABM_SETSTATE, pabd);

pabd是一个指向结构的指针APPBARDATA
头文件为:shellapi.h。

如果要获取任务栏的状态,请使用ABM_GETSTATE消息。你可以在delphi中调用这个api。

于 2009-06-13T05:18:25.733 回答
11

真正想知道的是什么?是因为你想知道可用的屏幕区域吗?

如果是这样,那么我相信您可以使用 Screen.WorkAreaRect 来确定可用的屏幕区域,其中排除了所有(永久)工具栏等。

于 2009-06-13T06:32:07.350 回答
1

使用 Win32 shell api(IsTBAutohide 和其他)
请参阅 Google Groups 以获取未记录的 api。
永远不要阅读注册表(ans停止删除正确的答案,这很愚蠢......)

于 2009-06-15T09:08:37.793 回答
-2

你必须处理 Windows 注册表,因为这些信息保存在那里。指示“autoohide”的值仅在用户使用其帐户登录/注销时写入(读取)

负责存储此信息的注册表项位于 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2 中唯一的内容是设置,它是“autohide on”的第 9 个十六进制值,此值是03,表示“autohide off” “现在是02

于 2009-06-13T05:19:02.767 回答