【发布时间】:2009-06-13 04:48:46
【问题描述】:
如何通过 Delphi 程序判断 Windows 资源管理器任务栏是否设置为自动隐藏?
【问题讨论】:
标签: delphi winapi taskbar windows-explorer
如何通过 Delphi 程序判断 Windows 资源管理器任务栏是否设置为自动隐藏?
【问题讨论】:
标签: delphi winapi taskbar windows-explorer
在 Windows XP 及更高版本中,您可以使用ABM_GETSTATE 消息调用SHAppBarMessage API。
语法:
SHAppBarMessage(ABM_SETSTATE, pabd);
pabd 是指向APPBARDATA 结构的指针。
头文件为:shellapi.h。
如果要获取任务栏的状态,请使用ABM_GETSTATE 消息。
你可以在delphi中调用这个api。
【讨论】:
你真正想知道什么?是因为你想知道屏幕的可用区域吗?
如果是这样,那么我相信您可以使用 Screen.WorkAreaRect 来确定可用的屏幕区域,其中排除了所有(永久)工具栏等。
【讨论】:
使用 Win32 shell api(IsTBAutohide 等)
请参阅 Google 网上论坛以获取未记录的 API。
从不阅读注册表(停止删除正确答案,这很愚蠢......)
【讨论】:
您必须处理 Windows 注册表,因为此信息保存在那里。指示“autoohide”的值仅在用户使用其帐户登录/注销时写入(读取)
负责存储此信息的注册表键位于 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2 唯一的东西是 settings,它是第 9 个十六进制值 对于“autohide on”,此值为 03 对于“autohide off”,此值为 02
【讨论】: