Что нового

Заблокировать кнопки кроме определенного окна

Сообщения
30
Репутация
-1
Доброго времени суток всем!
Как можно заблокировать нажатия кнопок и кнопок мыши (_BlockInputEx(2, "{MMOVE}|{MWSCROLL}")) , кроме определенного окна (в данном случае это диспетчер задач [TITLE:Диспетчер задач Windows;CLASS:#32770]), либо окно выхода из windows

wxp101_html_m28851047.png
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
bradu [?]
В архиве с библиотекой есть же пример (Example - Exclude Spec Window.au3):

Код:
#include <BlockInputEx.au3>

HotKeySet("{ESC}", "_Quit") ;This will trigger an exit (on the Notepad's window).

Global $iMark = 0

Run(@WindowsDir & "\Notepad.exe", "", @SW_MAXIMIZE)
WinWait("[REGEXPCLASS:Notepad.*]")
$hNotepad_Wnd = WinGetHandle("[REGEXPCLASS:Notepad.*]")

_BlockInputEx(3)

;This is only for testing, so if anything go wrong, the script will exit after 10 seconds.
AdlibRegister("_Quit", 10000)

While 1
	If $iMark = 0 And WinActive($hNotepad_Wnd) Then
		$iMark = 1
		_BlockInputEx(0)
	ElseIf $iMark = 1 And Not WinActive($hNotepad_Wnd) Then
		$iMark = 0
		_BlockInputEx(3)
	EndIf
	
    Sleep(10)
WEnd

Func _Quit()
	Exit
EndFunc
 
Автор
B
Сообщения
30
Репутация
-1
Есть пример, но у меня не получилось и не все понятно, autoit завершается с ошибкой

Код:
$hNotepad_Wnd = WinGetHandle("[TITLE:Диспетчер задач Windows;CLASS:#32770]")

While 1
	If WinActive("[TITLE:Диспетчер задач Windows;CLASS:#32770]") Then
		
		_BlockInputEx(0)
	Else
		
		_BlockInputEx(2, "{MMOVE}|{MWSCROLL}")
	EndIf
	
    Sleep(10)
WEnd


Что такое Global $iMark = 0 ?

И каким образом можно вызвать окно выхода из Windows? В принципе, можно только это окно принудительно вызывать и этого будет достаточно.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Верх