[应求]设置自动隐藏任务栏及判断其状态的Delphi代码

  应@橙子 同学的要求,放出TaskbarHider的主要功能代码,大家可据此自由发挥,完善改造出更好的小软件(分享一下最好了)。
设置自动隐藏的代码如下:

procedure AutoHideTaskBar(bHide: BOOL);
const ABM_SETSTATE = 10 ;  // 0x0000000a  
var
    apBar: APPBARDATA;
begin
    apBar.cbSize := sizeof(apBar);
    apBar.hWnd := FindWindow('Shell_TrayWnd', nil);
    if  apBar.hWnd >0  then
    begin
        if (bHide = TRUE) then
            apBar.lParam := ABS_AUTOHIDE 
       else
            apBar.lParam := ABS_ALWAYSONTOP; 
       SHAppBarMessage(ABM_SETSTATE, apBar); 
    end;
end;

判断自动隐藏状态的代码如下:

function IsTaskbarAutoHideOn : boolean;
var
    ABData : TAppBarData;
begin
     ABData.cbSize := sizeof(ABData);
     Result := (SHAppBarMessage(ABM_GETSTATE, ABData) and ABS_AUTOHIDE) > 0;
end;

至于隐藏任务栏,就更加的简单了,代码如下:

    ShowWindow(findwindow('Shell_TrayWnd',nil),SW_HIDE);
    ShowWindow(FindWindow('Button',nil),SW_HIDE);

注(第二句):由于自Vista系统之后,开始按钮独立于任务栏之外,故需单独隐藏,XP及之前系统,不需要这一句。

以上就是TaskbarHider的核心代码了,在参考网络资料的基础上,贡献了一部分脑细胞,就生出了这么个软件。
是不是很简单, 有需要的可稍微参考一下,如此文对您有任何一点点帮助,则足矣。

SHAppBarMessage函数除了此处的自动隐藏任务栏之外,还有其他的一些作用,可自行参考MSDN

有人爱: 醉倚黄昏
有事做: https://zyhh.me/delphi/taskbarhider-src.html
有所期待: 一个有雨有肉的夜晚,和你没头没尾分一瓶酒。
评论 (2)
  1. # 1
    橙子 2013-02-10 12:22

    谢谢

  2. # 2
    hostgator 2013-02-12 07:42

    好喜欢你的文章,详细又实在,谢谢,新年快乐