Is there a way to disable gestures for Windows8

We have a need for one of our applications, where we need to disable some of the built-in gestures for Windows 8 so that users do not leave the application. (remember the kiosk on the screen). Are there methods that allow the user to interact with the application using touch, but disabling / intercepting some of the built-in gestures (for example, docking the application on the left, switching to the desktop, etc.).

Our backup solution is to completely disable the touch screen on some screens (this is what we can do), but we would like to work better with users and simply turn off gestures that we absolutely need (similar to disabling the Windows key, ctrl + alt + del instead of the entire keyboard).

The initial searches and investigations did not confirm what we were looking for, so we are either looking for either the one or the other.

+6
source share
6 answers

You can disable the gesture in Windows 8 Embedded. Perhaps you can try this on Windows 8.

Registry keys:

[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. 

if you want to disable every gesture just add dword: 0000000f (15)

+5
source

To do this programmatically, you can call the function in the link below. It requires hWnd for the window you want to target.

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

Next in C ++ there will be a search for a window with the window title "helloworld" and disable all Windows 8 gestures for it. This does not work for Windows Store applications, and the function should be called in the window while it is open. If the application is closed and reopens, the gestures will return. In addition, I believe that it only works during a full-screen application.

 #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; } 
+3
source

The Windows Condom Panel runs explorer.exe .

So, if your application can work without it, you can hack it by first disabling autoload explorer.exe via (run as administrator):

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

Then the lines below represent my launch.bat - which works at the end, as expected:

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

I use the approach described above to launch an application without a keyboard without a kiosk. Since using the keyboard you can still close the application using alt + f4 .

+1
source

Setting IsTapEnabled , IsDoubleTapEnabled , IsRightTapEnabled and IsHoldingEnabled to false should disable gestures in the user interface element, but they are properties, not methods. I have not seen a method that disables ALL gestures for a specific element.

I know that it would be ridiculous to disable each control in order to respond to gestures, but if you need to disable all controls literally from Root to Children, then creating the attach property in the root and setting these properties to false may be the solution.

0
source

Gestures are handled by explorer.exe. If you replace the Windows shell (default: explorer.exe) with your application, then there are no more gestures at the OS level.

Registry keys:

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

Key: "Shell" (REG_SZ) = "path_to_your_application"

you can also do this only for the current user (HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows_NT \ CurrentVersion \ Winlogon)

0
source

At least in 8.1, a feature called Assigned Access appears:

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

Settings> Change PC settings> Accounts> Other accounts> Set up an account for designated access

0
source

Source: https://habr.com/ru/post/925364/


All Articles