如果 Windows 资源管理器任务栏设置为自动隐藏,我如何通过 Delphi 程序判断?
4 回答
在 Windows XP 及更高版本中,您可以使用消息调用SHAppBarMessage
API 。ABM_GETSTATE
句法:
SHAppBarMessage(ABM_SETSTATE, pabd);
pabd
是一个指向结构的指针APPBARDATA
。
头文件为:shellapi.h。
如果要获取任务栏的状态,请使用ABM_GETSTATE
消息。你可以在delphi中调用这个api。
你真正想知道的是什么?是因为你想知道可用的屏幕区域吗?
如果是这样,那么我相信您可以使用 Screen.WorkAreaRect 来确定可用的屏幕区域,其中排除了所有(永久)工具栏等。
使用 Win32 shell api(IsTBAutohide 和其他)
请参阅 Google Groups 以获取未记录的 api。
永远不要阅读注册表(ans停止删除正确的答案,这很愚蠢......)
你必须处理 Windows 注册表,因为这些信息保存在那里。指示“autoohide”的值仅在用户使用其帐户登录/注销时写入(读取)
负责存储此信息的注册表项位于 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2 中唯一的内容是设置,它是“autohide on”的第 9 个十六进制值,此值是03,表示“autohide off” “现在是02