1

Тема: AHK: Заблокировать клавиатуру и мышь

Следующий скрипт переключает блокировку клавиатуры и мыши одной клавишей F1. Как задать сочетание из двух клавиш, например - "Ctrl+Esc"?

BlockInput, on
SplashImage,, W500 H100 B1 FM20 CW0FFf0f CWffFf0f,, F1 — чтобы разблокировать `nклавиатуру и мышь,, Arial ;yellow
Return

$F1::  ;Num Lock
   BlockInput, off
   SplashImage, OFF
   ExitApp
return

2

Re: AHK: Заблокировать клавиатуру и мышь

Вам ссылку на справку, или на ChatGPT?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: 1srafel, 2025-04-22 02:49:34)

Re: AHK: Заблокировать клавиатуру и мышь

Просто я пробовал и вот так -

Ctrl & Esc

и так -

^Esc

Но потом приходилось перезагружать компьютер и блокировка как надо не работает. Видимо, необходим хоткей с символом - $.

4

Re: AHK: Заблокировать клавиатуру и мышь

Не понимаю, какую блокировку вы имеете в виду и при чём тут перезагрузка компьютера.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Заблокировать клавиатуру и мышь

Блокировку ввода клавиш и движений мыши.

6

Re: AHK: Заблокировать клавиатуру и мышь

Если бы вы объяснили все по порядку, какого поведения вы хотите, какие способы пробовали и в чём были проблемы, тогда отвечающим было бы проще. Изначальный вопрос выглядит так, будто вы не знаете, как задавать клавиши с модификатором, и спрашиваете здесь вместо того, чтобы просто заглянуть в справку.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: 1srafel, 2025-04-22 22:37:17)

Re: AHK: Заблокировать клавиатуру и мышь

Спасибо. Хочу, чтобы по нажатии сочетания из двух клавиш, срабатывал переключатель блокировки мыши и ввода с клавиатуры в системе. Пробовал разные варианты сочетаний с модификатором и без, но при этом ожидаемый функционал по блокировке не срабатывает. В том числе:

$Ctrl & sc1::  ;Ctrl + Esc

8

Re: AHK: Заблокировать клавиатуру и мышь

У меня работает только на AHK v2, и только, если запущено от Администратора.

#Requires AutoHotkey v2.0
#UseHook

^Esc:: {
    static toggle := false
    BlockInput toggle ^= 1
}

На v1 блокировка не снимается, не знаю почему.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9 (изменено: 1srafel, 2025-04-23 15:03:46)

Re: AHK: Заблокировать клавиатуру и мышь

Правильно понимаю, что переключатель в принципе не может работать на v1 с двойной клавишей?

Нашелся скрипт для v1, где в настройках можно задать хоткей и количество секунд до разблокировки после нажатия хоткея. Может ли он работать с переключателем по двойной клавише без секунд?

;BlockInput.ahk
; Temporarily block all input by pressing a hotkey
; To run, save to BlockInput.ahk and install AutoHotkey from www.autohotkey.com
;Skrommel @2006

#SingleInstance,Force

applicationname=BlockInput

Gosub,INI
Gosub,TRAYMENU
Return

HOTKEY:
Loop
{
  GetKeyState,shift,Shift,P
  GetKeyState,ctrl,Ctrl,P
  GetKeyState,alt,Alt,P
  If (shift="U" And ctrl="U" And alt="U")  
    Break
}

BlockInput,On
counter:=delay
Loop,%delay%
{
  ToolTip,BlockInput resumes in %counter% seconds
  counter-=1
  Sleep,1000
}
ToolTip
BlockInput,Off
Return

TRAYMENU:
Menu,Tray,NoStandard 
Menu,Tray,DeleteAll 
Menu,Tray,Add,%applicationname%,ABOUT
Menu,Tray,Add,
Menu,Tray,Add,&Settings...,SETTINGS
Menu,Tray,Add,&About...,ABOUT
Menu,Tray,Add,E&xit,EXIT
Menu,Tray,Default,%applicationname%
Menu,Tray,Tip,%applicationname%
Return


SETTINGS:
HotKey,%hotkey%,Off
Gui,Destroy
Gui,Add,GroupBox,xm ym w400 h70,&Hotkey
Gui,Add,Hotkey,xp+10 yp+20 w380 vshotkey
StringReplace,current,hotkey,+,Shift +%A_Space%
StringReplace,current,current,^,Ctrl +%A_Space%
StringReplace,current,current,!,Alt +%A_Space%
Gui,Add,Text,,Current hotkey: %current%
Gui,Add,GroupBox,xm y+20 w400 h50,&Delay
Gui,Add,Edit,xp+10 yp+20 w380 vsdelay,%delay%
Gui,Add,Button,xm y+10 w75 GSETTINGSOK,&OK
Gui,Add,Button,x+5 w75 GSETTINGSCANCEL,&Cancel
Gui,Show,,%applicationname% Settings
Return

SETTINGSOK:
Gui,Submit
If shotkey<>
{
  hotkey:=shotkey
  HotKey,%hotkey%,HOTKEY
}
HotKey,%hotkey%,On
If sdelay<>
  delay:=sdelay
IniWrite,%hotkey%,%applicationname%.ini,Settings,hotkey
IniWrite,%delay%,%applicationname%.ini,Settings,delay
Return

SETTINGSCANCEL:
HotKey,%hotkey%,HOTKEY
HotKey,%hotkey%,On
Gui,Destroy
Return


INI:
IfNotExist,%applicationname%.ini
{
  IniWrite,^Q,%applicationname%.ini,Settings,hotkey
  IniWrite,5,%applicationname%.ini,Settings,delay
}
IniRead,hotkey,%applicationname%.ini,Settings,hotkey
IniRead,delay,%applicationname%.ini,Settings,delay
HotKey,%hotkey%,HOTKEY
HotKey,%hotkey%,On
Return



ABOUT:
Gui,Destroy
Gui,Margin,20,20
Gui,Add,Picture,xm Icon1,%applicationname%.exe
Gui,Font,Bold
Gui,Add,Text,x+10 yp+10,%applicationname% v1.0
Gui,Font
Gui,Add,Text,y+10,- Press Ctrl+Q to temporarily block all input.
Gui,Add,Text,y+10,- To change the settings, choose Settings in the tray menu.

Gui,Add,Picture,xm y+20 Icon2,%applicationname%.exe
Gui,Font,Bold
Gui,Add,Text,x+10 yp+10,1 Hour Software by Skrommel
Gui,Font
Gui,Add,Text,y+10,For more tools, information and donations, please visit 
Gui,Font,CBlue Underline
Gui,Add,Text,y+5 G1HOURSOFTWARE,www.1HourSoftware.com
Gui,Font

Gui,Add,Picture,xm y+20 Icon7,%applicationname%.exe
Gui,Font,Bold
Gui,Add,Text,x+10 yp+10,DonationCoder
Gui,Font
Gui,Add,Text,y+10,Please support the contributors at
Gui,Font,CBlue Underline
Gui,Add,Text,y+5 GDONATIONCODER,www.DonationCoder.com
Gui,Font

Gui,Add,Picture,xm y+20 Icon6,%applicationname%.exe
Gui,Font,Bold
Gui,Add,Text,x+10 yp+10,AutoHotkey
Gui,Font
Gui,Add,Text,y+10,This tool was made using the powerful
Gui,Font,CBlue Underline
Gui,Add,Text,y+5 GAUTOHOTKEY,www.AutoHotkey.com
Gui,Font

Gui,Add,Button,GABOUTOK Defaultw75,&OK

Gui,Show,,%applicationname% About
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND
OnMessage(0x200,"WM_MOUSEMOVE") 
Return

1HOURSOFTWARE:
  Run,http://www.1hoursoftware.com,,UseErrorLevel
Return

DONATIONCODER:
  Run,http://www.donationcoder.com,,UseErrorLevel
Return

AUTOHOTKEY:
  Run,http://www.autohotkey.com,,UseErrorLevel
Return

ABOUTOK:
  Gui,Destroy
  OnMessage(0x200,"")
  DllCall("DestroyCursor","Uint",hCur)
Return

WM_MOUSEMOVE(wParam,lParam)
{
  Global hCurs
  MouseGetPos,,,,ctrl
  If ctrl in Static8,Static12,Static16
    DllCall("SetCursor","UInt",hCurs)
  Return
}
Return


EXIT:
ExitApp

10

Re: AHK: Заблокировать клавиатуру и мышь

Пользуюсь таким костылем:


~$END::
  if (A_TimeSincePriorHotkey <= 200 && A_PriorHotkey = "~$END")
  {
    MouseGetPos,Lockx,Locky
    lockInput:=true
    BlockInput,on
    tooltip,Клавиатура и мышь заблокированны.`nВведите пароль и нажмите ввод чтобы разблокировать.
    loop,0x7F
    {
      if (a_index!=0x5E and !(a_index>=0x3A and a_index<=0x40) and a_index!=0x1A and a_index!=0x16 and a_index!=0x0A and a_index!=0x0B and a_index!=0x07)
        hotkey,% "vk" a_index,keyblock,On UseErrorLevel
    }
    settimer,MouseLock,50
  }
  return


#if lockInput
:*B0:пароль::
:*B0:gfhjkm::
  send,{alt up}{shift up}{ctrl up}{win up}
  tooltip
  loop,0x7F
    hotkey,% "vk" a_index,keyblock,Off UseErrorLevel
  BlockInput,off
  lockInput:=false
  settimer,MouseLock,off
  return
#if


keyblock:
  return


MouseLock:
MouseGetPos,DF_X,DF_Y
if (DF_X!=LockX or DF_Y!=LockY)
  Mousemove,Lockx,Locky
  return
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

11

Re: AHK: Заблокировать клавиатуру и мышь

Спасибо!

12

Re: AHK: Заблокировать клавиатуру и мышь

Как переделать ToolTip на SplashImage, поддерживаемый в v2? Испробовал кучу вариантов в том числе с GUI из справки и двух ИИ - всё с ошибками.

#Requires AutoHotkey v2.0
#UseHook

^6:: {
    static toggle := false
    toggle := !toggle

    BlockInput(toggle)

    if (toggle) {
        ToolTip("BlockInput включен")
    } else {
        ToolTip("BlockInput выключен")
        Sleep(1000)
        ToolTip("")
    }
}

13

Re: AHK: Заблокировать клавиатуру и мышь

Теперь все вопросы в одной теме будете задавать?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder