论坛首页 编程语言技术论坛

隐藏桌面上任务栏和开始按钮的小例子

浏览 6841 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-15   最后修改:2010-10-26
C++

原理很简单。在Windows里任务栏或者开始按钮也是窗口,就是先得到窗口句柄,然后调用WindowsAPI函数,ShowWindow,参数显示为隐藏即可。

隐藏任务栏的代码如下:

 

HWND hwnd;
hwnd = FindWindow("Shell_TrayWnd", NULL);
ShowWindow(hwnd, SW_HIDE);
UpdateWindow(hwnd);

 

 

隐藏开始按钮的代码如下:

 

HWND hwnd;
hwnd = GetDlgItem(FindWindow("Shell_TrayWnd", NULL), 0x130); 
ShowWindow(hwnd, SW_HIDE);
UpdateWindow(hwnd);

 

Shell_TrayWnd 是任务栏的类
0x130 是开始按钮的ID

这些都可以用VC++6.0下面的Spy++ 工具捕获到。

你可以用它自己捕获任何一个你想要的窗口或者按钮。

 

PS:编译可能会出现一个错误:

fatal error LNK1104: cannot open file "stlport_vc6_static.lib"

解决办法:

工程 -> 设置 -> C/C++ -> 代码生成 -> 运行库设为 Debug Multithreaded Dll 即可。

 

   发表时间:2011-03-20  
这个不知道有什么用,为什么不直接更改WINDOWS的设置呢,如果只是这么隐藏的话,那你要保证你的程序必须要比explorer.exe启动的更早,才好,不然会出现闪一下的问题
0 请登录后投票
   发表时间:2011-04-06  
问题是,隐藏任务栏的同时把窗口也隐藏了,有没办法不隐藏窗口,只隐藏任务栏
0 请登录后投票
   发表时间:2011-04-08  
我的问题是Shell_TrayWnd,根本就返回不了句柄

如果能返回,加下下面的就可以了


   if   (NULL   ==   hShellTrayWnd)
                //return   NO_SHELLTRAYWND;
return -2;

        hTrayNotifyWnd   =   FindWindowEx(hShellTrayWnd,   NULL,   ( "TrayNotifyWnd "),   NULL);
        if   (NULL   ==   hTrayNotifyWnd)
                //return   FAILURE;
return -1;

        hToolbarWindow32_Notify   =   FindWindowEx(hTrayNotifyWnd,   NULL,   _T( "ToolbarWindow32 "),   NULL);
        if   (NULL   ==   hToolbarWindow32_Notify)
                //return   FAILURE;
return -1;

        *hwnd   =   hToolbarWindow32_Notify;
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics