Есть ли способ отключить жесты для Windows8

У нас есть потребность в одном из наших приложений, где нам нужно отключить некоторые встроенные жесты для Windows 8, чтобы пользователи не могли выйти из приложения. (думаю, экран входа в киоск). Существуют ли методы, позволяющие пользователю взаимодействовать с приложением с помощью сенсорного экрана, но отключающие/перехватывающие некоторые встроенные жесты (такие как стыковка приложения слева, переход на рабочий стол и т. д.).

Наше резервное решение состоит в том, чтобы полностью отключить касание на определенных экранах (это то, что мы можем сделать), но мы хотели бы улучшить взаимодействие с пользователем и просто отключить жесты, которые нам абсолютно необходимы (аналогично отключению клавиши Windows, ctrl+ Alt+Del вместо всей клавиатуры).

Первоначальные поиски и расследование не дали того, что мы искали, поэтому мы либо ищем не то, либо не в том месте.


person George Clingerman    schedule 13.09.2012    source источник


Ответы (6)


Вы можете отключить жесты в Windows 8 Embedded. Может быть, вы можете попробовать это в Windows 8.

Ключи реестра:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell\EdgeUI]
"DisabledEdges"=dword:0000000f

0x01 : Disables left edge input and app switcher gesture.
0x02 : Disables right edge input and charm bar gesture.
0x04 : Disables top edge input and top application bar gesture.
0x08 : Disables bottom edge input and bottom application bar gesture.

если вы хотите отключить каждый жест, просто добавьте dword:0000000f (15)

person Quentin V    schedule 05.11.2012
comment
К сожалению, не получилось использовать Windows 8.1 with Bing на Thinkpad 10. У вас есть другие предложения? - person Matyas; 25.08.2014

Чтобы сделать это программно, вы можете вызвать функцию по ссылке ниже. Для этого требуется hWnd для окна, на которое вы хотите настроить таргетинг.

http://msdn.microsoft.com/en-us/library/windows/desktop/jj553591%28v=vs.85%29.aspx

Приведенный ниже C++ будет искать окно с заголовком «helloworld» и отключать для него все жесты Windows 8. Это не работает для приложений Магазина Windows, и функцию нужно вызывать в окне, пока оно открыто. Если приложение закрыть и снова открыть, жесты вернутся. Кроме того, я считаю, что это работает только тогда, когда приложение полноэкранное.

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <propsys.h>
#include <propkey.h>

using namespace std;

HWND windowHandle;

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

BOOL CALLBACK MyEnumProc(HWND hWnd, LPARAM lParam)
{
    TCHAR title[500];
    ZeroMemory(title, sizeof(title));    

    GetWindowText(hWnd, title, sizeof(title)/sizeof(title[0]));

    if (!_tcscmp(title, _T("helloworld")))
    {
        SetTouchDisableProperty(hWnd,true);
    }

    return TRUE;
}

int _tmain(int argc, _TCHAR* argv[])
{   
    EnumWindows(MyEnumProc, 0);
    return 0;
}
person Aaron    schedule 15.02.2013

Панель чудо-кнопок Windows управляется explorer.exe.

Поэтому, если ваше приложение может работать без него, вы можете обойти его, сначала отключив автоматический перезапуск explorer.exe с помощью (запуск от имени администратора):

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoRestartShell" /t REG_DWORD /d 0

Затем строки ниже представляют мой launch.bat, который в итоге работает, как и ожидалось:

;; kill explorer (this disables all windows functionalities
taskkill /f /im explorer.exe

;; start your kiosk app - should block the batch execution (so explorer.exe doesn't get executed at the end)
"\path\to\your\app.exe"

;; relaunch explorer.exe after you close the app to give back the functionality to windows
explorer.exe

Я использую подход, описанный выше, чтобы запустить киоск-приложение без клавиатуры. Потому что с клавиатурой вы по-прежнему можете закрыть приложение с помощью alt+f4.

person Matyas    schedule 26.08.2014

Установка для IsTapEnabled, IsDoubleTapEnabled, IsRightTapEnabled и IsHoldingEnabled значения false должна отключить жесты. в элементе пользовательского интерфейса, но это свойства, а не методы. Я не видел метода, который бы отключал ВСЕ жесты для определенного элемента.

Я знаю, что было бы нелепо отключать каждый элемент управления, чтобы он реагировал на жесты, но если вам нужно отключить все элементы управления буквально от Root до Children, тогда создание свойства присоединения в корне и установка для этих свойств значения false может быть решением.

person 123 456 789 0    schedule 14.09.2012
comment
На самом деле я не пытаюсь отключить все жесты для элемента. Я пытаюсь отключить жесты на уровне ОС. В Win8 вы можете выполнять определенные жесты независимо от приложения, и ОС будет выполнять определенные действия (показывать рабочий стол, закреплять слева и т. д.). Мне нужно перехватить/отключить эти функции уровня ОС. Так что на самом деле это не имеет ничего общего с элементами управления на моей странице (и на самом деле мы хотели бы, чтобы пользователи взаимодействовали с элементами управления в приложении на ощупь). - person George Clingerman; 17.09.2012

Жесты обрабатываются программой explorer.exe. Если вы замените оболочку Windows (по умолчанию: explorer.exe) своим приложением, то на уровне ОС больше не будет жестов.

Ключи реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows_NT\CurrentVersion\Winlogon\

Ключ: «Оболочка» (REG_SZ) = «путь_к_вашему_приложению»

вы также можете сделать это только для текущего пользователя (HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows_NT\CurrentVersion\Winlogon)

person doerig    schedule 17.10.2012
comment
если вы хотите отключить жесты только для приложения метро, ​​как выглядит путь? - person Sam; 23.11.2012

По крайней мере, в версии 8.1 появилась функция Assigned Access:

http://blogs.technet.com/b/askpfeplat/archive/2013/10/28/how-to-setup-assigned-access-in-windows-8-1-kiosk-mode.aspx

http://windows.microsoft.com/en-us/windows-8/assigned-access

Настройки > Изменить настройки ПК > Учетные записи > Другие учетные записи > Настроить учетную запись для назначенного доступа

person Calvin Fisher    schedule 24.07.2014