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