关闭 Windows 8 超级按钮栏

2024-02-03

我有一台 Surface Pro,我需要将其“锁定”为一种 Kiosk 模式。我知道“信息亭模式”的更新正在进行中..但是我需要在此之前执行此操作。

我在互联网上进行了搜索,但似乎您无法通过滑动来禁用超级按钮栏screen。我找到了禁用触控板的方法。但不幸的是,由于这款平板电脑将在没有键盘的情况下使用,因此我需要禁用超级按钮栏。

我的新想法是将整个 Charm bar 移出屏幕 HWND 数千像素,或者在其上设置 Windows 样式以使其不会出现。我尝试使用 Spy++ 和自定义EnumWindows基于控制台应用程序给我一些窗口句柄..但是我无法保持超级按钮栏打开足够长的时间以使它们生效。

所以我的问题是:如何找到窗口句柄(HWND) Windows 8 中的超级按钮栏?或者,我如何以其他方式获得对超级按钮栏的引用,以便抛出一个SetWindowLong or SetWindowPos at it?


事实上,我已经找到了一种方法来做到这一点(显然,没有其他人有:/)。

对于那些想知道的人,可以使用“Start8”和“SkipMetroSuite”等软件按轮询键来停止 Charm Bar。他们从字面上模拟按键以将其关闭在一个紧密的循环中。

我找到了(我认为是)更好的方法。

首先...一些 WinAPI 函数:

using System.Runtime.InteropServices;
....

private enum WindowShowStyle : uint
{  // find more info at http://stackoverflow.com/a/8210120/1245420
   Hide = 0, ShowNormal = 1, ShowMinimized = 2, ShowMaximized = 3,
   ShowNormalNoActvate = 4, Show = 5, Minimize = 6, ShowNoActivate = 8,
   Restore = 9, ShowDefault = 10, ForceMinimized = 11
}

[DllImport("user32.dll", SetLastError = true)]
static extern System.IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern System.IntPtr FindWindowByCaption(System.IntPtr ZeroOnly, string lpWindowName);

[DllImport("user32.dll")]
static extern bool ShowWindow(System.IntPtr hWnd, WindowShowStyle nCmdShow);

所以首先出现的问题是 Charm Bar。这个窗口的标题是,Charm Bar。生成一个线程不断寻找该窗口并将其隐藏,效果非常好。所以我生成一个线程,并不断轮询它:

System.Threading.Tasks.Task.Factory.StartNew(() => {
    while (true) {
        System.IntPtr hWndCharmBar = FindWindowByCaption(System.IntPtr.Zero, "Charm Bar");
        ShowWindow(hWndCharmBar, 0);
        System.Threading.Thread.Sleep(100); // sleep for a bit
    }
});

这样做效果很好,并带来了额外的好处,即在应用程序关闭时,Charm Bar 可以继续工作。这Thread.Sleep是为了阻止线程破坏 CPU - 但延迟也允许 Charm Bar 瞬间出现。我还没有成功打开超级按钮栏并在线程再次隐藏它之前足够快地按下按钮,所以这很好。减少睡眠时间显然可以让这个过程更快。

Windows 8 的另一个问题是,如果您有某种滑块(在我的应用程序中,我有一个ListBox包含画廊的图像)然后您实际上可以滑动到屏幕的一侧...将手指放在那里,然后访问任务栏...

所以..下一部分是关闭任务栏:

IntPtr hWndTray = FindWindow("Shell_TrayWnd", null);
ShowWindow(hWndTray, 0);

..然后我在应用程序关闭时再次显示它:

IntPtr hWndTray = FindWindow("Shell_TrayWnd", null);
ShowWindow(hWndTray, 1);

从功能上讲,这就是我的应用程序所需的全部内容。希望对某人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关闭 Windows 8 超级按钮栏 的相关文章

随机推荐

  • 应用程序初始化时的 Firebase 身份验证

    这是作品 console log User ID user id Provider user provider 但这不是 scope authenticated currentUser user id 我的目标是获取一些身份验证变量 电子邮
  • 如何删除 SQL Server 数据库中所有表中的所有行?

    如何删除 SQL Server 数据库中所有表中的所有行 请注意 如果您设置了任何引用完整性 则 TRUNCATE 将不起作用 在这种情况下 这将起作用 EXEC sp MSForEachTable DISABLE TRIGGER ALL
  • 重复捕获组

    我有一个包含零个或多个数字 然后包含零个或多个字符的字符串ABCD 我想将数字解析为一组 然后将所有字符解析为每个字符的单独组 我试过了 0 9 ABCD 正确捕获数字 但仅捕获最后一个字母 0 9 ABCD 正确捕获数字 但首先捕获一组中
  • 权限错误:[Errno 13] 权限被拒绝

    我收到此错误 Exception in Tkinter callback Traceback most recent call last File C Python34 lib tkinter init py line 1538 in ca
  • 删除/清除 django.contrib.messages

    我想有条件清除django contrib messages 这两个问题中讨论的解决方案都不起作用 删除所有 django contrib messages https stackoverflow com questions 3951831
  • Angular v4:我们将数据存储在服务或组件中还是两者都存储?

    Angular v4 我们将数据存储在服务或组件中还是两者都存储 在查看了相当多的教程以及阅读了 Angular 的文档之后 我仍然不清楚这个主题 https angular io tutorial toh pt2 https angula
  • Eclipse + maven:忽略配置文件

    这是我的 pom xml
  • 使用主机文件的本地主机上的通配符子域[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在 Windows 7 上运行 IIS 7 的开发计算机上设置子域 看起来可以通过编辑hosts文件输入C Windows Sy
  • 重写onDraw()还是draw()?

    我的项目基于 SurfaceView 到目前为止 我已经在 onDraw 中进行了所有渲染 我正在覆盖它 一切似乎都很好 然而 我刚刚更新了我的 SDK 现在它给我一个错误告诉我 可疑的方法调用 可能应该调用 draw 而不是 onDraw
  • JQuery UI:如何使用其命名空间调用小部件函数

    我创建了两个具有相同名称但具有不同命名空间的自定义 JQuery UI 小部件 如下所示 第一个小部件 widget finance dialog this was created in the file jquery finance di
  • webpack 引用不带变量的类型

    running yarn run webpack dev 没问题 但是 yarn run webpack prod 产生这个错误 ERROR in Illegal State referring to a type without a va
  • OpenCV 将 Mat 保存为二进制(1 位深度)TIFF

    假设我们有一个Mat应用OpenCv后Imgproc adaptiveThreshold Mat srcImage Mat binaryImage new Mat Imgproc adaptiveThreshold srcImage bin
  • 将 JSON 转换为 .csv

    我发现有人正在将一些数据下载到 JSON 文件中 我想 我是新手 该文件包含近 600 名足球运动员的数据 这是文件 https raw githubusercontent com llimllib fantasypl stats f944
  • 如何获取当前键盘布局的代码页?

    我的非 Unicode 应用程序需要能够处理 Unicode 键盘输入 WM CHAR 等 从而接收 8 位字符代码 然后在内部将其转换为 Unicode 需要 9x 兼容性 因此不能选择使用大多数 Unicode API 目前 它查看 P
  • iOS FFT 绘制频谱

    我读过这些问题 使用 Apple FFT 和加速框架 https stackoverflow com questions 3398753 using the apple fft and accelerate framework 使用 Acc
  • 选择 Firefox 附加目录中的文件

    为了简单起见 我将基于 XUL 的 Firefox 插件转换为基于 SDK 的版本 我在基于 XUL 的版本中使用的 XPCOM 模块似乎可以工作 但 ci nsIFile 的行为不同 我不知道如何导航到当前位于目录最高层的 smartPr
  • ASP.NET MVC MultiSelectList 的选定值未正确选择

    我知道其他人也问过这个问题 但我对此完全困惑 这将显示未选择任何值的下拉列表 这将显示下拉列表 其中包含我在 Model items 中传递的值 这些值已正确选择 就像我所期望的那样
  • 使用 gdb 调试 C++11 右值引用

    我刚刚注意到我无法调试rvalue参考文献与gdb 7 7 1适当地 void simple int i 当我输入这个简约函数时 我无法获得任何有意义的信息i It s type and value are unknown to gdb s
  • 当我实现自定义 Lint 检测器时如何调试 java 源代码?

    我是一名 Android 开发者 我已经通过实现新的 XXXDetector 和 XXXIssueRegistry 设计了自己的 lint 规则 这是我的源代码片段 我的 XXXIssueRegistry 文件 public class M
  • 关闭 Windows 8 超级按钮栏

    我有一台 Surface Pro 我需要将其 锁定 为一种 Kiosk 模式 我知道 信息亭模式 的更新正在进行中 但是我需要在此之前执行此操作 我在互联网上进行了搜索 但似乎您无法通过滑动来禁用超级按钮栏screen 我找到了禁用触控板的