【问题标题】:How can I prevent the Charm bar from showing up in my Java application?如何防止 Charm 栏出现在我的 Java 应用程序中?
【发布时间】:2014-12-08 16:33:20
【问题描述】:

我有一个以全屏模式运行的 Java swing 程序。它实际上是一个信息亭程序,因为我希望它在运行时锁定其他所有内容。这是在 Windows 8.1 平板电脑上运行的,所以平板电脑当然是触摸屏,因此如果您执行“边缘滑动”(从右侧拖动手指),超级按钮栏会弹出,您可以从那里进入“开始”屏幕.有没有办法在Java中禁止这种情况发生? (或者是否有一些不涉及 Java 的第三方解决方案可以协同工作以达到相同的结果?)

【问题讨论】:

  • 您可以在 kiosk 模式下运行平板电脑吗?
  • AFAIK,Microsoft 的 Kiosk 模式仅适用于 Metro Apps(使用 C# 而非 Java 编写)。

标签: java swing windows-8.1 tablet kiosk


【解决方案1】:

您可以通过在窗口上设置System.EdgeGesture.DisableTouchWhenFullScreen 属性来在应用处于活动状态和全屏状态时禁用边缘手势。

我不知道 Java 是否提供了直接设置它的方法(可能没有),但您应该能够从 JNI 设置它。

这是来自 DisableTouchWhenFullScreen 文档的 C++ sn-p:

HRESULT SetTouchDisableProperty(HWND hwnd, BOOL fDisableTouch)
{
    IPropertyStore* pPropStore;
    HRESULT hrReturnValue = SHGetPropertyStoreForWindow(hwnd, IID_PPV_ARGS(&pPropStore));
    if (SUCCEEDED(hrReturnValue))
    {
        PROPVARIANT var;
        var.vt = VT_BOOL;
        var.boolVal = fDisableTouch ? VARIANT_TRUE : VARIANT_FALSE;
        hrReturnValue = pPropStore->SetValue(PKEY_EdgeGesture_DisableTouchWhenFullscreen, var);
        pPropStore->Release();
    }
    return hrReturnValue;
}

【讨论】:

    【解决方案2】:

    我最终做的是编写一个批处理脚本来杀死explorer.exe,然后在应用退出后重新生成它,基于this answer on Super User

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 2022-07-27
      相关资源
      最近更新 更多