我需要创建一个在Windows 8上全屏运行的应用程序,用户不应该轻易退出。
由于应用程序将在仅具有触觉输入的计算机或平板电脑上运行,因此我打算创建一个无边框和最顶级的WPF应用程序,只有在连接键盘时才能关闭它。
问题是左侧的应用程序切换栏和右侧的超级按钮栏仍然可以在没有键盘的情况下打开,并允许用户退出应用程序。这可以从代码中禁用吗?我似乎无法找到办法。
简单的解决方案是在另一个操作系统上运行,但机器将运行Windows 8,我无能为力。
答案 0 :(得分:1)
我用一些我在网上某处发现的笔记挖出了.TXT,它可能会有所帮助(最坏的情况,它不适用于Windows 8而且不起作用。不幸的是我是无法引用它的来源,我真的不记得它来自哪里了):
自XP以来已经存在“自助服务终端模式”。通常它的目的是锁定IE以显示一些交互式网页,同时不让用户关闭它:它被称为强制用户配置文件。
进行设置:
当您完成并登录新帐户后,您会发现它的表现几乎就像您一直在寻找的自助服务终端模式。要撤消更改,请注销并重新登录。
答案 1 :(得分:0)
我有完全相同的问题,形成我所知道的,除非你使用自制的rootkit来禁用Charms Bar,否则就无法做到。在考虑了所有其他选项之后,这就是我的运作方式。
为了节省你一些时间,这将是无效的。
以下是一些可行的选项,但不是很漂亮。请看以下内容:
否则,你无能为力。我很想听听你是如何解决这个问题的。
查看我问过的类似问题:Kiosks in Windows 8 Running Regular Software (Non-Windows Store App)
答案 2 :(得分:0)
当你的应用程序启动时杀死explorer.exe
,而魅力栏将无效。
答案 3 :(得分:0)
我知道回答这个问题可能有点迟了但希望这有助于其他人,在你的Regedit中有一个regkey可以让你选择什么' Shell' Windows启动进入,默认情况下它设置为explorer.exe,如果你更改它,它将启动到你想要的任何程序,而无需通过愚蠢的Windows 8开始菜单。
Regkey在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell
希望对大家有所帮助。
答案 4 :(得分:0)
简单的解决方案,不完美但有效,每次激活魅力栏时,您的应用程序都会停用,因此立即重新激活它并且魅力栏消失。将其添加到App.xaml.cs
中75
答案 5 :(得分:0)
那是2018年,Window 10几乎完全推出Windows8。Win8的“热点”在Win10中再次变得冷淡-它们显然是巨大的成功。但是,如果您仍然需要在Win8.x / Win2012中禁用它们并最终在此处寻找解决方案(如我所做的那样),那么这就是我解决的方法。 我意识到,如果全屏应用程序处于活动状态并且覆盖任务栏,则Windows会自动禁用它们。由于我的应用程序是基于对话框的而不是全屏的,因此我创建了一个透明窗口(对输入透明且透明),并将其设置为对话框的父窗口。现在,这个不可见的窗口覆盖了整个屏幕->禁用了热角。
这样的事情(简化):
int nVirtualScreenLeft = GetSystemMetrics (SM_XVIRTUALSCREEN);
int nVirtualScreenTop = GetSystemMetrics (SM_YVIRTUALSCREEN);
int nVirtualScreenWidth = GetSystemMetrics (SM_CXVIRTUALSCREEN);
int nVirtualScreenHeight = GetSystemMetrics (SM_CYVIRTUALSCREEN);
HWND hwndFullScreenInvisible = CreateWindowEx(
WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW,
_T("Static"), strWindowCaption,
WS_VISIBLE | WS_POPUP,
nVirtualScreenLeft, nVirtualScreenTop, nVirtualScreenWidth, nVirtualScreenHeight,
HWND_DESKTOP, NULL, NULL, NULL);
if (hwndFullScreenInvisible != NULL)
{
BOOL bRet = SetLayeredWindowAttributes (hwndFullScreenInvisible, /*COLORREF = */ 0, /* byAlpha = */ 0, LWA_ALPHA);
}
CMyDlg dlg (CWnd::FromHandle(hwndFullScreenInvisible));
dlg.DoModal ();
答案 6 :(得分:-2)
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ ImmersiveShell \ EdgeUI \ DisableTLcorner DWORD = 1
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ ImmersiveShell \ EdgeUI \ DisableCharmsHint DWORD = 1