<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Отключение клавиатуры для оного приложения]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14781&amp;type=atom" />
	<updated>2019-05-16T10:05:54Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=14781</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134365#p134365" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[SHOX]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39086</uri>
			</author>
			<updated>2019-05-16T10:05:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134365#p134365</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134359#p134359" />
			<content type="html"><![CDATA[<p>Кнопка в переменной toggleKey (сейчас F1):<br /></p><div class="codebox"><pre><code>window := &quot;ahk_class Notepad&quot;
toggleKey := &quot;F1&quot;

toggle := []

OnExit(Func(&quot;KeyboardHook&quot;).Bind(false))
handler := Func(&quot;ToggleKeyboardBlock&quot;).Bind(toggle)
Hotkey, % &quot;$&quot; . toggleKey, % handler, On

Loop {
   WinWaitActive, % window
   ( !toggle[1] &amp;&amp; KeyboardHook(true) )
   WinWaitNotActive, % window
   ( !toggle[1] &amp;&amp; KeyboardHook(false) )
}
Return

ToggleKeyboardBlock(toggle) {
   global window
   toggle[1] := !toggle[1]
   SoundBeep toggle[1] ? 900 : 600
   if WinActive(window)
      KeyboardHook( toggle[1] ? false : true )
}
   
KeyboardHook(set) {
   static hHook
   if !set
      (hHook &amp;&amp; DllCall(&quot;UnhookWindowsHookEx&quot;, Ptr, hHook) &amp;&amp; hHook := &quot;&quot;)
   else
      hHook := DllCall(&quot;SetWindowsHookEx&quot;, Int, WH_KEYBOARD_LL := 13
                                         , Ptr, RegisterCallback(&quot;LowLevelKeyboardProc&quot;, &quot;Fast&quot;)
                                         , Ptr, DllCall(&quot;GetModuleHandle&quot;, UInt, 0, Ptr)
                                         , UInt, 0, Ptr)
}

LowLevelKeyboardProc(nCode, wParam, lParam)
{
   global toggleKey
   static vkToggle
   ( !vkToggle &amp;&amp; vkToggle := GetKeyVK(toggleKey) )
   vk := NumGet(lParam + 0, &quot;UInt&quot;)
   Return vk != vkToggle ? 1 : DllCall(&quot;CallNextHookEx&quot;, Ptr, 0, Int, nCode, Ptr, wParam, Ptr, lParam)
}</code></pre></div><p>Изначально блокировка включена.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2019-05-15T23:48:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134359#p134359</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134356#p134356" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> Спасибо! Работает! Но не помешало бы иметь возможность отключать&nbsp; скрипт кнопкой возможно? А так спасибо! Работает как я и хотел))</p>]]></content>
			<author>
				<name><![CDATA[SHOX]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39086</uri>
			</author>
			<updated>2019-05-15T23:03:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134356#p134356</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134348#p134348" />
			<content type="html"><![CDATA[<p>Для блокнота можно так:<br /></p><div class="codebox"><pre><code>window := &quot;ahk_class Notepad&quot;

OnExit(Func(&quot;KeyboardHook&quot;).Bind(false))

Loop {
   WinWaitActive, % window
   KeyboardHook(true)
   WinWaitNotActive, % window
   KeyboardHook(false)
}
   
KeyboardHook(set) {
   static hHook
   if !set
      (hHook &amp;&amp; DllCall(&quot;UnhookWindowsHookEx&quot;, Ptr, hHook) &amp;&amp; hHook := &quot;&quot;)
   else
      hHook := DllCall(&quot;SetWindowsHookEx&quot;, Int, WH_KEYBOARD_LL := 13
                                         , Ptr, RegisterCallback(&quot;LowLevelKeyboardProc&quot;, &quot;Fast&quot;)
                                         , Ptr, DllCall(&quot;GetModuleHandle&quot;, UInt, 0, Ptr)
                                         , UInt, 0, Ptr)
}

LowLevelKeyboardProc(nCode, wParam, lParam)
{
   Return 1
}</code></pre></div><p>При активности блокнота клавиатура блокируется, при неактивности или завершении скрипта — разблокируется.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2019-05-15T22:24:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134348#p134348</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134346#p134346" />
			<content type="html"><![CDATA[<p><strong>stealzy</strong> <br />Спасибо большое! это то что нужно!<br />Единственно хотелось бы что бы данный скрипт можно было как то отключить одной кнопкой.. Это возможно сделать?</p>]]></content>
			<author>
				<name><![CDATA[SHOX]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39086</uri>
			</author>
			<updated>2019-05-15T22:15:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134346#p134346</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134344#p134344" />
			<content type="html"><![CDATA[<p>Вам ведь нужно чтобы это включалось когда окно активно, значит нужно еще поставить оконный хук, который будет управлять состоянием клавы.<br />Предлагаю вам более простой подход:<br /></p><div class="codebox"><pre><code>
#If WinActive(&quot;ahk_class Notepad&quot;)
F1:: KeyBlockOn := !KeyBlockOn
#If WinActive(&quot;ahk_class Notepad&quot;) and KeyBlockOn
*q::
*w::
*e::
*r::
*t::
*y::
; добавить по вкусу
	Return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[stealzy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31937</uri>
			</author>
			<updated>2019-05-15T21:36:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134344#p134344</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134343#p134343" />
			<content type="html"><![CDATA[<p>Вот скрипт </p><div class="codebox"><pre><code>OnExit, Exit
hHookMouse := DllCall(&quot;SetWindowsHookEx&quot;
   , Int, WH_MOUSE_LL := 14
   , Ptr, RegisterCallback(&quot;LowLevelMouseProc&quot;, &quot;Fast&quot;)
   , Ptr, DllCall(&quot;GetModuleHandle&quot;, UInt, 0, Ptr)
   , UInt, 0, Ptr)
   
hHookKeybd := DllCall(&quot;SetWindowsHookEx&quot;
   , Int, WH_KEYBOARD_LL := 13
   , Ptr, RegisterCallback(&quot;LowLevelKeyboardProc&quot;, &quot;Fast&quot;)
   , Ptr, DllCall(&quot;GetModuleHandle&quot;, UInt, 0, Ptr)
   , UInt, 0, Ptr)
   
Sleep 5000
DllCall(&quot;UnhookWindowsHookEx&quot;, Ptr, hHookMouse), hHookMouse := &quot;&quot;
DllCall(&quot;UnhookWindowsHookEx&quot;, Ptr, hHookKeybd), hHookKeybd := &quot;&quot;
Return

Exit:
   (hHookMouse &amp;&amp; DllCall(&quot;UnhookWindowsHookEx&quot;, Ptr, hHookMouse))
   (hHookKeybd &amp;&amp; DllCall(&quot;UnhookWindowsHookEx&quot;, Ptr, hHookKeybd))
   ExitApp

LowLevelMouseProc(nCode, wParam, lParam)
{
   Return 1
}

LowLevelKeyboardProc(nCode, wParam, lParam)
{
   Return 1
}</code></pre></div><p> он работает вроде как надо но не постоянно. Моих знаний не хватает что-бы изменить его так что-бы на кнопку включался и на кнопку отключался...<br />Подскажите люди добрые как это реализовать..</p>]]></content>
			<author>
				<name><![CDATA[SHOX]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39086</uri>
			</author>
			<updated>2019-05-15T21:20:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134343#p134343</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134342#p134342" />
			<content type="html"><![CDATA[<p>Да, перед тем как просить помощи тут я читал&nbsp; про blockinput.&nbsp; Как я понял он отключает и клавиатуру и&nbsp; мышь мне бы желательно только клавиатуру. Так возможно? Ну или если по нажатию кнопки можно будет вернуть работоспособность клавиатуры и мышки то тоже пойдет. <strong>belyankin12</strong></p>]]></content>
			<author>
				<name><![CDATA[SHOX]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39086</uri>
			</author>
			<updated>2019-05-15T20:06:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134342#p134342</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134338#p134338" />
			<content type="html"><![CDATA[<p>Ifwinactive и blockinput то что вам нужно.</p>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2019-05-15T17:35:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134338#p134338</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Отключение клавиатуры для оного приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=134337#p134337" />
			<content type="html"><![CDATA[<p>Здравствуйте.<br />Подскажите пожалуйста как отключить ввод с клавиатуры для одного конкретного приложения? При этом что бы во всем остальном ПК клавиатура работала. <br />Возможно ли так сделать?</p>]]></content>
			<author>
				<name><![CDATA[SHOX]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39086</uri>
			</author>
			<updated>2019-05-15T16:23:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=134337#p134337</id>
		</entry>
</feed>
