如何防止Charm栏出现在我的Java应用程序中?

时间:2014-10-14 01:34:48

标签: java swing windows-8.1 tablet kiosk

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

2 个答案:

答案 0 :(得分:0)

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

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

以下是DisableTouchWhenFullScreen文档中的C ++代码段:

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;
}

答案 1 :(得分:0)

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