窗口用户切换活动窗口

时间:2017-09-13 20:32:08

标签: windows winapi hook autohotkey kiosk-mode

我想阻止用户切换窗口(类似于自助服务终端应用程序)。但是我想通过任何应用程序的键盘快捷方式随时关闭此行为od(和关闭)。

我实现的最好的事情是AutoHotkey脚本等待激活键盘快捷键并检测活动窗口的更改,当活动窗口更改时它运行程序(在我的情况下为Clearlock)但是锁定计算机也没问题对我来说。

当我在计算机上与某人做某事并且我想暂时离开而不是完全锁定计算机时,我会使用此功能。我的朋友,女朋友或同事可以理解我不相信他们。

这是我的自动热键脚本:

Gui +LastFound 
hWnd := WinExist()
DllCall( "RegisterShellHookWindow", UInt,Hwnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return

ShellMessage( wParam,lParam )
{
    WinGetTitle, title, ahk_id %lParam%
    If (wParam=4) { ;HSHELL_WINDOWACTIVATED
        global kiosk
        If (kiosk) {
            global kiosk
            kiosk := 0

            Run "%PORTABLE_APPS%\utility\clearlock\ClearLock.exe"
        }
    }
}

kiosk := 0

^!K::
    global kiosk
    global kiosk
    If (kiosk) {
        kiosk := 0
        ToolTip "unlocked`n%kiosk%"
    } Else {
        kiosk := 1
        ToolTip "The screen will be locked if necessary`n%kiosk%"
    }
    sleep 1000
    ToolTip
    Return

该脚本在Windows 7上运行完美。但是它在Windows 10上没有做任何事情。

什么可能导致问题?我该如何解决? 我想要么纠正脚本。 或任何其他解决方案如何无形地锁定计算机或将任何应用程序切换到kios模式或防止切换应用程序。

然而,我并不需要超级安全。因为我想要防止做任何令人讨厌的事情的人都是朋友。

1 个答案:

答案 0 :(得分:1)

如果最大的安全性不是焦点,那么最简单的解决方案就是这样:

F3::
Loop
{
WinActivate, Untitled - Notepad
Sleep, 50
if getkeystate("Esc", "p")
    {        
        break
    }
}
return