找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5721|回复: 1

[开源] VC实现显示、自动隐藏任务栏(SHAppBarMessage)

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2012-5-7 22:38:38 | 显示全部楼层 |阅读模式
一、显示和隐藏任务栏

要想对任务栏进行操作,首先当然需要获得任务栏的句柄,所以首先利用FindWindow获取句柄,再操作
示例代码:
1、隐藏任务栏
HWND hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);
ShowWindow(hWnd,SW_HIDE);
2、显示任务栏
HWND hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);
ShowWindow(hWnd,SW_SHOW);

二、自动隐藏任务栏和取消自动隐藏任务栏(隐藏于自动隐藏不同)
需要利用一API函数:SHAppBarMessage
UINT_PTR SHAppBarMessage(      
    DWORD dwMessage,
    PAPPBARDATA pData
);

参数说明:
dwMessage   可以为下列参数
ABM_ACTIVATE                           激活一个 appbar
ABM_GETAUTOHIDEBAR               检索屏幕边缘的 appbar
ABM_GETSTATE                           检索最顶层的Microsoft Windows任务栏
ABM_GETTASKBARPOS                 检索任务栏
ABM_NEW                                    注册一个新的appbar,该系统并发送一消息给appbar
ABM_QUERYPOS                           appbar 大小和屏幕位置
ABM_REMOVE                               取消注册一个 appbar,并从系统内部列表移出
ABM_SETAUTOHIDEBAR                在屏幕边缘注册或取消注册appbar
ABM_SETPOS                               设置appbar 的大小和屏幕位置
ABM_SETSTATE                           设置appbar为最顶层
ABM_WINDOWPOSCHANGED         当appbar得状态发送改变时向系统发送消息

pData
一个APPBARDATA结构体

示例代码:

void AutoHideTaskBar(BOOL bHide)
{
      //这三句视情况加于不加
      #ifndef   ABM_SETSTATE
      #define   ABM_SETSTATE             0x0000000a
      #endif

       LPARAM lParam;
       if(bHide == TRUE)
       {
              lParam = ABS_AUTOHIDE;//自动隐藏
       }
       else
       {
              lParam = ABS_ALWAYSONTOP;//取消自动隐藏
       }

       APPBARDATA apBar;
       memset(&apBar,0,sizeof(apBar));
       apBar.cbSize = sizeof(apBar);
       apBar.hWnd = FindWindow("Shell_TrayWnd", NULL);
       if(apBar.hWnd != NULL)
       {
              apBar.lParam   =   lParam;
              SHAppBarMessage(ABM_SETSTATE,&apBar); //设置任务栏自动隐藏
       }   
}

调用 AutoHideTaskBar(TRUE);//or
       AutoHideTaskBar(FALSE);//

来源:http://apps.hi.baidu.com/share/detail/18873472
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-5-16 13:13:22 | 显示全部楼层
嗯嗯 很好 很好 支持您了
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表