7957|23

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何写代码隐藏wince任务栏 [复制链接]


隐藏wince的任务栏,或者把explorer的任务栏通过修改源代码让它宽度设置成0,都可以,如何实现呢?
此帖出自WindowsCE论坛

最新回复

学习了。  详情 回复 发表于 2010-2-5 09:15
点赞 关注
 

回复
举报

121

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
// 隐藏任务栏
void HideTaskBar()
{
#ifdef _WIN32_WCE
        //隐藏任务栏
        HWND hWnd=::FindWindow(_T("HHTaskBar"),NULL);   
        while(hWnd==NULL)   
        {   
                hWnd = ::FindWindow(_T("HHTaskBar"),NULL);   
                Sleep(1000);   
        }   
        ::ShowWindow(hWnd,SW_HIDE);       
#endif
}
此帖出自WindowsCE论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
没有必要: Sleep(1000);
此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
要隐藏命令栏和任务栏

1,可以在OnInitDialog()函数中实现如下代码,

先要隐藏命令栏:

          // 隐藏命令栏,命令栏是屏幕最下边的一条
          HWND hWnd = SHFindMenuBar(m_hWnd);
          ::CommandBar_Show(hWnd, FALSE);   

          // SHFullScreen fails if dialog box is not foreground.   

          //如果对话框不在最前面,那么SHFullScreen()函数会失败
          SetForegroundWindow();

          // 隐藏任务栏,任务栏是屏幕最上边的一条
          SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON|SHFS_HIDESTARTICON);   

          // Resize the window over the taskbar area.  
          CRect rcScreen;
          rcScreen.SetRect( 0,
                                       0,
                                       GetSystemMetrics( SM_CXSCREEN ),
                                       GetSystemMetrics( SM_CYSCREEN ));
          MoveWindow(&rcScreen, TRUE);

          // 隐藏输入面板
          SIPINFO si;
          memset(&si, 0, sizeof(SIPINFO));
          si.cbSize = sizeof(SIPINFO);
          SHSipInfo(SPI_GETSIPINFO, 0, &si, 0);
          if (si.fdwFlags & SIPF_ON)
          {
               si.cbSize = sizeof(SIPINFO);
               si.fdwFlags = SIPF_OFF;
               SHSipInfo(SPI_SETSIPINFO, 0, &si, 0);
          }


可以看一下我的博客:http://hailang19821213.blog.163.com/blog/static/3067946120095245313795/edit/

此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
mark方法很多的。学习下。
我以前实验过是注册表先隐藏然后在程序里设置程序TOPmost,效果也还可以。呵呵
LS的方法也很好。学习
此帖出自WindowsCE论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
用1楼的就可以,把Sleep去掉,没必要,3楼的是mobile下的,wince下没法用
此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
1楼的 方法或者 修改注册表 都可以隐藏,不够还是会留下一条横线,,
要想彻底还是要改explorer 的源代码。
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
修改PB中explorer.exe的源代码,重新编译,把explorer.exe添加进操作系统即可
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

9
 
其实任务栏可以不隐藏,直接将你的程序全屏置顶显示就可以了。
参考如下代码:
m_iX = ::GetSystemMetrics( SM_CXSCREEN );
m_iY = ::GetSystemMetrics( SM_CYSCREEN );
::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,m_iX,m_iY,WS_EX_TOPMOST);
此帖出自WindowsCE论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
帮顶下。


MARK,我也学习下。
此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
学习了
此帖出自WindowsCE论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 7 楼 domworldjohn 的回复:
修改PB中explorer.exe的源代码,重新编译,把explorer.exe添加进操作系统即可


修改explorer.exe,对其语言(英文/中文)的处理可能有问题噢

编译成英文简单,想编译成中文的,不知道你没有搞定
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

13
 
MARK,学习!!
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

14
 
这个方面挺好的
不用sleep 了
引用 1 楼 evccode 的回复:
// 隐藏任务栏
void HideTaskBar()
{
#ifdef _WIN32_WCE
        //隐藏任务栏
        HWND hWnd=::FindWindow(_T("HHTaskBar"),NULL);
        while(hWnd==NULL)
        {
                hWnd = ::FindWindow(_T("HHTaskBar"),NULL);
                Sleep(1000);
        }
        ::ShowWindow(hWnd,SW_HIDE);
#endif
}
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

15
 
mark
此帖出自WindowsCE论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

16
 
我有两个方法:
方法一:
  1. //========================================================================
  2. //TITLE:
  3. //    EVC隐藏任务栏
  4. //AUTHOR:
  5. //    norains(嵌入式下专家,嘻嘻)
  6. //DATE:
  7. //    Wednesday 17-May-2006
  8. //========================================================================
  9. 任务栏在WinCE下的类名是"HHTaskBar",可以使用FindWindow()函数获取其句柄,然后用ShowWindow()即可对其隐藏.
  10.    例如:
  11. HANDLE hTaskBar;
  12. hTaskBar = FindWindow(TEXT("HHTaskBar"), NULL); //搜寻任务栏句柄
  13. ShowWindow(hTaskBar, SW_HIDE);                  //隐藏
  14. ShowWindow(hTaskBar, SW_SHOWNORMAL);            //显示
  15. //那如何判断一个窗口是否隐藏呢?可以调用IsWindowVisible(),如果返回值为FALSE,则窗口肯定隐藏.
  16. 例如:
  17. if(IsWindowVisible(hTaskBar)==FALSE)
  18. {
  19.    //如果任务栏隐藏,就把任务栏显示出来
  20.    ShowWindow(hTaskBar, SW_SHOWNORMAL)
  21. }
复制代码
方法二:
  1.         LONG   lOldWindowStyle;  
  2.         RECT   rectOldTaskBarRect;  
  3.        
  4.         HWND   hOldhTaskBar   =   ::FindWindow(_T("HHTaskBar"),NULL);  
  5.        
  6.         while(   hOldhTaskBar   ==   NULL   )  
  7.         {  
  8.                 hOldhTaskBar   =   ::FindWindow(_T("HHTaskBar"),NULL);  
  9.                 Sleep(   1000   );  
  10.         }  
  11.        
  12.         ::GetWindowRect(   hOldhTaskBar,   &rectOldTaskBarRect   );  
  13.         ::SetWindowPos(   hOldhTaskBar,   HWND_BOTTOM,   0,   0,   0,   0,   SWP_HIDEWINDOW|SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE);  
  14.         lOldWindowStyle   =   GetWindowLong(hOldhTaskBar,   GWL_STYLE);  
  15.         ::SetWindowLong(   hOldhTaskBar,   GWL_STYLE,   lOldWindowStyle|WS_DISABLED   );
复制代码
楼主,你都试一下吧,呵呵,我用的时候看效果不好,就直接PASS了。
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 15 楼 wolfmvp 的回复:
我有两个方法:
方法一:
C/C++ code//========================================================================//TITLE://    EVC隐藏任务栏//AUTHOR://    norains(嵌入式下专家,嘻嘻)//DATE://    Wednesday 17-May-2006//========================================================================任务栏在WinCE下的类名是"HHTaskBar",可以使用FindWindow()函数获取其句柄,然后用ShowWindow()即可对其隐藏.
   例如:
HANDLE hTaskBar;
hTaskBar= FindWindow(TEXT("HHTaskBar"), NULL);//搜寻任务栏句柄ShowWindow(hTaskBar, SW_HIDE);//隐藏ShowWindow(hTaskBar, SW_SHOWNORMAL);//显示//那如何判断一个窗口是否隐藏呢?可以调用IsWindowVisible(),如果返回值为FALSE,则窗口肯定隐藏.例如:if(IsWindowVisible(hTaskBar)==FALSE)
{//如果任务栏隐藏,就把任务栏显示出来   ShowWindow(hTaskBar, SW_SHOWNORMAL)
}方法二:
C/C++ code    LONG   lOldWindowStyle;  
    RECT   rectOldTaskBarRect;  
   
    HWND   hOldhTaskBar=   ::FindWindow(_T("HHTaskBar"),NULL);while(   hOldhTaskBar==   NULL   )  
    {  
        hOldhTaskBar=   ::FindWindow(_T("HHTaskBar"),NULL);  
        Sleep(1000   );  
    }  
   
    ::GetWindowRect(   hOldhTaskBar,&rectOldTaskBarRect   );  
    ::SetWindowPos(   hOldhTaskBar,   HWND_BOTTOM,0,0,0,0,   SWP_HIDEWINDOW|SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE);  
    lOldWindowStyle=   GetWindowLong(hOldhTaskBar,   GWL_STYLE);  
    ::SetWindowLong(   hOldhTaskBar,   GWL_STYLE,   lOldWindowStyle|WS_DISABLED   );楼主,你都试一下吧,呵呵,我用的时候看效果不好,就直接PASS了。


此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

18
 
mark~~~~~~~~~~
此帖出自WindowsCE论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

19
 
修改注册表的方法用过,再过来学习一下,呵呵
此帖出自WindowsCE论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

20
 
学习了
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表