Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disable Windows 8 edge gestures/hot corners for multi-touch applications while running in full screen

I have a full screen AS3 game maby with Adobe AIR that runs in Windows 7. In this game it may not be easy to exit (think about kiosk mode, only exit by pressing esc and enter a password).

Now I want this game to run in Windows 8. The game is working like expected but the anoying things are these edge gestures/hot corners (left, top, right, bottom) and the shortcuts.

I've read articles but none helped me. People talk about registery edits, but I dont get this working + the user needs to restart his/hers computer.

I want to open my game, turn off gestures/hot corners and when the game closes the gestures/hot corners need to come back available again.

I have seen some applications doing the same what I want to accomplish.

I found this so I am able to detect the gestures. But how to ignore they're actions?

I also read ASUS Smart Gestures but this is for the touch-pad.

And I have tried Classic Shell but I need to disable the edge gestures/hot corners without such programs, just on-the-fly.

I also found this but I don't know how to implement this.

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

Does anyone know how I can do this? Or point me into the right direction?

I have tried some in C# and C++, but I aint a skilled C#/C++ developer. Also the game is made in AS3 so it will be hard to implement this in C#/C++.

I work on the Lenovo aio (All in one) with Windows 8.

like image 672
Ron van der Heijden Avatar asked Nov 20 '12 10:11

Ron van der Heijden


1 Answers

I am making a kiosk application for windows 8 using C#, I succesfully disabled the swipe gestures by killing the explorer process when the program starts up. I don't know how it's done in C++ but in C# it's like this.

var explorers = Process.GetProcessesByName("explorer");
            foreach (var explorer in explorers) {
                explorer.Kill();
            }

On the closing event of my program I just start the process again.

Process.Start("explorer.exe");

Before this works you might have to edit your register to prevent explorer from restarting after you kill it.

In regedit go to

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Set the AutoRestartShell to 0.

like image 96
Dovogja Avatar answered Oct 15 '22 15:10

Dovogja