为了有效的遏制用户在WINCE的PDA系统运行时,通过任务栏直接切换到桌面上,经常会用到界面全屏最大化窗体并将任务栏隐藏的方法,这里通过API函数成功实现以上方法。
代码测试环境 VS2005 C#+Symbol MC1000
代码如下:
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Runtime.InteropServices;
- using System.Windows.Forms;
- namespace SymbolScanWood
- {
- public class ShowForm
- {
- const uint SHFS_SHOWTASKBAR = 0x0001;
- const uint SHFS_HIDETASKBAR = 0x0002;
- const uint SHFS_SHOWSIPBUTTON = 0x0004;
- const uint SHFS_HIDESIPBUTTON = 0x0008;
- const uint SHFS_SHOWSTARTICON = 0x0010;
- const uint SHFS_HIDESTARTICON = 0x0020;
- const int SW_HIDE = 0;
- const int SW_SHOWNORMAL = 1;
- const int SW_SHOWMINIMIZED = 2;
- const int SW_SHOWMAXIMIZED = 3;
- const int SW_SHOWNOACTIVATE = 4;
- const int SW_RESTORE = 9;
- const int SW_SHOWDEFAULT = 10;
- [DllImport("aygshell.dll")]
- static extern uint SHFullScreen(IntPtr hwndRequester, uint dwState);
- [DllImport("coredll.dll")]
- public static extern IntPtr GetCapture();
- [DllImport("CoreDll")]
- public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
- [DllImport("CoreDll")]
- public static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
- public ShowForm()
- {
- //
- // TODO: 在此处添加构造函数逻辑
- //
- }
- /// <summary>
- /// 全屏显示
- /// </summary>
- /// <param name="objForm"></param>
- public void ShowFullScreen(System.Windows.Forms.Form objForm)
- {
- objForm.Capture = true;
- HideHHTaskBar();
- IntPtr hwnd = GetCapture();
- objForm.Capture = false;
- SHFullScreen(hwnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);//全屏化窗口
- }
- /// <summary>
- /// 显示任务栏
- /// </summary>
- public void ShowHHTaskBar()
- {
- IntPtr lpClassName = FindWindow("HHTaskBar", null);
- ShowWindow(lpClassName, SW_SHOWNORMAL); //显示任务栏
- }
- /// <summary>
- /// 隐藏任务栏
- /// </summary>
- public void HideHHTaskBar()
- {
- IntPtr lpClassName = FindWindow("HHTaskBar", null);
- ShowWindow(lpClassName, SW_HIDE); //隐藏任务栏
- }
- public static void ShowChineseAboutForm()
- {
- MessageBox.Show("wood", "关于", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
- }
- public static void ShowEnglishAboutForm()
- {
- MessageBox.Show("wood", "About", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
- }
- }
- }
在程序中引用上面生成的dll,使用如下:
//声明
private SymbolScanWood.SymbolScanWood _objDisplay;
//隐藏任务栏
_objDisPlay.HideHHTaskBar();
//显示任务栏
_objDisplay.ShowHHTaskBar();
占华