禁用Windows Mobile 6.5中的菜单栏

时间:2011-03-29 12:37:25

标签: .net windows-mobile titlebar windows-mobile-6.5 kiosk-mode

我正在将.NET应用程序从WM5移植到WM6.5。除了新的解决方案,我注意到开始菜单和标题栏(标题栏)的不同UI行为。我的应用程序需要以某种自助服务终端模式工作,用户无法退出应用程序并绕过我们的身份验证。为此,我在WM5上隐藏了开始按钮和关闭按钮。我正在使用以下功能:

SHFullScreen(hWnd, SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON); 

隐藏按钮也适用于WM6.5,但还有另一个问题。用户可以点击标题栏(菜单栏,标题栏 - 我不确定它的名称是什么 - 屏幕顶部的栏)并可以访问Windows任务管理器。请参见附件截图 Application

我打开了用户可以点按的地方,然后像这样前往任务管理器: Task Manager starting

有关如何禁用该互动的任何想法?设备是摩托罗拉MC65。运行Windows Mobile 6.5。

因此,最终答案是下面发布的答案的一部分:

IntPtr tWnd = FindWindow("HHTaskBar", null);
EnableWindow(tWnd, false);

我们只是找到HHTaskBar并禁用它。它有一些缺点,但总体来说就是诀窍。

2 个答案:

答案 0 :(得分:5)

您可以隐藏整个顶部任务栏并最大化您的表单:

// the following three lines are p/invoked
IntPtr tWnd = FindWindow("HHTaskBar", null);
EnableWindow(tWnd, false);
ShowWindow(tWnd, SW_HIDE);

// maximize your form
form.Size = new Size(240, 320); // or whatever the device's screen dimensions are
form.WindowState = FormWindowState.Maximized;

答案 1 :(得分:0)

尝试使用SHFS_HIDETASKBAR方法SHFullScreen,这在MSDN上以这种方式描述:

  

将任务栏放在底部   Z顺序。注意游戏或者   需要整个的应用程序   屏幕可能会使用此标志。确保这一点   您的应用程序大小已满   使用此标志前的屏幕。   否则,它看起来好像   这个功能什么也没做。

protected override void OnLoad(EventArgs e)
{
    ...

    SHFullScreen(this.Handle, SHFS_HIDETASKBAR | 
        SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);

    base.OnLoad(e);
}

private const int SHFS_SHOWTASKBAR = 0x0001;
private const int SHFS_HIDETASKBAR = 0x0002;
private const int SHFS_SHOWSIPBUTTON = 0x0004;
private const int SHFS_HIDESIPBUTTON = 0x0008;
private const int SHFS_SHOWSTARTICON = 0x0010;
private const int SHFS_HIDESTARTICON = 0x0020;

[DllImport("aygshell")]
static extern bool SHFullScreen(IntPtr hwnd, int dwState);