5

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

SHFullScreen(hWnd, SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON); 

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

我绕过了用户可以点击并进入任务管理器的地方,如下所示: 任务管理器启动

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

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

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

我们只是找到 HHTaskBar 并禁用它。它有一些缺点,但总的来说可以。

4

2 回答 2

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;
于 2011-03-29T12:49:43.213 回答
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);
于 2011-03-29T12:45:36.047 回答