Что нового

Не отрабатывает Scroll Lock

ildar

Осваивающий
Сообщения
252
Репутация
29
Сделал интерфейс для работы с кассой по UDP, все клавиши работают кроме Scroll Lock. При нажатии Num Lock в этом интерфейсе, на клавиатуре загорается индикатор, при нажатии на Scroll Lock ни клавиатура, ни касса не реагируют.
Код полностью:
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=e:\autoit\koda_1.7.2.8_b247_2010-04-15\forms\key.kxf
$Form1_1 = GUICreate("KeyEmulation", 643, 437, 192, 114)
$Button1 = GUICtrlCreateButton("Esc", 16, 16, 73, 49)
GUICtrlSetCursor (-1, 2)
$Button2 = GUICtrlCreateButton("F1", 152, 16, 73, 49)
$Button3 = GUICtrlCreateButton("F2", 240, 16, 73, 49)
$Button4 = GUICtrlCreateButton("F3", 328, 16, 73, 49)
$Button5 = GUICtrlCreateButton("F4", 416, 16, 73, 49)
$Button6 = GUICtrlCreateButton("F5", 152, 88, 73, 49)
$Button7 = GUICtrlCreateButton("F6", 240, 88, 73, 49)
$Button8 = GUICtrlCreateButton("F7", 328, 88, 73, 49)
$Button9 = GUICtrlCreateButton("F8", 416, 88, 73, 49)
$Button10 = GUICtrlCreateButton("Scroll Lock", 544, 88, 89, 49)
$Button11 = GUICtrlCreateButton("<", 16, 352, 81, 73)
$Button12 = GUICtrlCreateButton(">", 224, 352, 81, 73)
$Button13 = GUICtrlCreateButton("^", 120, 256, 81, 73)
$Button14 = GUICtrlCreateButton("v", 120, 352, 81, 73)
$Button15 = GUICtrlCreateButton("Tab", 16, 88, 73, 49)
$Button16 = GUICtrlCreateButton("Alt + F10", 16, 176, 73, 49)
$Button17 = GUICtrlCreateButton("Alt + 244", 104, 176, 73, 49)
$Button18 = GUICtrlCreateButton("Alt + 245", 192, 176, 73, 49)
$Button19 = GUICtrlCreateButton("Alt + 246", 280, 176, 73, 49)
$Button20 = GUICtrlCreateButton("Exit", 544, 376, 89, 49)
$Button21 = GUICtrlCreateButton("Num Lock", 544, 160, 89, 49)
$Button22 = GUICtrlCreateButton("Insert", 544, 232, 89, 49)
$Button23 = GUICtrlCreateButton("BackSpace", 544, 16, 89, 49)
$Button24 = GUICtrlCreateButton("Enter", 368, 256, 105, 169)
$Button25 = GUICtrlCreateButton("Alt + F1", 368, 176, 73, 49)
$Button26 = GUICtrlCreateButton("Alt + F2", 456, 176, 73, 49)
$Button27 = GUICtrlCreateButton("TEUDP", 544, 304, 89, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$hWnd = 0

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
			Case $Button20
            Exit
        Case $Button1
			GUISetState(@SW_HIDE, $Form1_1)
            Esc()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button2
			GUISetState(@SW_HIDE, $Form1_1)
            F1()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button3
			GUISetState(@SW_HIDE, $Form1_1)
            F3()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button4
			GUISetState(@SW_HIDE, $Form1_1)
            F4()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button5
			GUISetState(@SW_HIDE, $Form1_1)
            F5()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button6
			GUISetState(@SW_HIDE, $Form1_1)
            F6()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button7
			GUISetState(@SW_HIDE, $Form1_1)
            F7()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button8
			GUISetState(@SW_HIDE, $Form1_1)
            F8()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button9
			GUISetState(@SW_HIDE, $Form1_1)
            ScrollLock()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button10
			GUISetState(@SW_HIDE, $Form1_1)
            F1()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button11
			GUISetState(@SW_HIDE, $Form1_1)
            LEFT()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button12
			GUISetState(@SW_HIDE, $Form1_1)
            RIGHT()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button13
			GUISetState(@SW_HIDE, $Form1_1)
            UP()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button14
			GUISetState(@SW_HIDE, $Form1_1)
            DOWN()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button15
			GUISetState(@SW_HIDE, $Form1_1)
            Tab()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button16
			GUISetState(@SW_HIDE, $Form1_1)
            AltF10()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button17
			GUISetState(@SW_HIDE, $Form1_1)
            Alt244()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button18
			GUISetState(@SW_HIDE, $Form1_1)
            Alt245()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button19
			GUISetState(@SW_HIDE, $Form1_1)
            Alt246()
            GUISetState(@SW_SHOW, $Form1_1)
       	Case $Button21
			GUISetState(@SW_HIDE, $Form1_1)
            NumLock()
            GUISetState(@SW_SHOW, $Form1_1)	
        Case $Button22
			GUISetState(@SW_HIDE, $Form1_1)
            Insert()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button23
			GUISetState(@SW_HIDE, $Form1_1)
            BackSpace()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button24
			GUISetState(@SW_HIDE, $Form1_1)
            Enter()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button25
			GUISetState(@SW_HIDE, $Form1_1)
            AltF1()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button26
			GUISetState(@SW_HIDE, $Form1_1)
            AltF2()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button27
			GUISetState(@SW_HIDE, $Form1_1)
            TEUDP()
            GUISetState(@SW_SHOW, $Form1_1)	
	EndSwitch
WEnd


Func TEUDP()
  $num = InputBox("","Введите IP кассы ","")
  Run("cmd")
  Sleep(1000)
  $hWnd = WinGetHandle('[Active]')
  ControlSend("","","","C:\TEUDP.exe " & $num)  
EndFunc

Func Esc()
  WinActivate($hWnd) 	
  Send("{Esc}")
EndFunc

Func F1()
  WinActivate($hWnd)
  Send("{F1}")
EndFunc

Func F2()
  WinActivate($hWnd)
  Send("{F2}")
EndFunc

Func F3()
  WinActivate($hWnd)
  Send("{F3}")
EndFunc

Func F4()
  WinActivate($hWnd)
  Send("{F4}")
EndFunc

Func F5()
  WinActivate($hWnd)
  Send("{F5}")
EndFunc

Func F6()
  WinActivate($hWnd)
  Send("{F6}")
EndFunc

Func F7()
  WinActivate($hWnd)
  Send("{F7}")
EndFunc

Func F8()
  WinActivate($hWnd)
  Send("{F8}")
EndFunc

Func ScrollLock()
  WinActivate($hWnd) 
  Send("{ScrollLock toggle}")  
EndFunc

Func Tab()
  WinActivate($hWnd)
  Send("{Tab}")
EndFunc

Func NumLock()
  WinActivate($hWnd)
  Send("{NumLock}")
EndFunc

Func Insert()
  WinActivate($hWnd)
  Send("{Insert}")
EndFunc

Func BackSpace()
  WinActivate($hWnd)
  Send("{BackSpace}")
EndFunc

Func Enter()
  WinActivate($hWnd)
  Send("{Enter}")
EndFunc

Func AltF10()
  WinActivate($hWnd)
  Send("{ALT down}")
  Send("{F10}")
  Send("{ALT up}")
EndFunc

Func Alt244()
  WinActivate($hWnd)
  Send("{Ї}")
EndFunc

Func Alt245()
  WinActivate($hWnd)
  Send("{ї}")
EndFunc

Func Alt246()
  WinActivate($hWnd)
  Send("{Ў}")
EndFunc

Func AltF1()
  WinActivate($hWnd)
  Send("{ALT down}")
  Send("{F1}")
  Send("{ALT up}")
EndFunc

Func AltF2()
  WinActivate($hWnd)
  Send("{ALT down}")
  Send("{F2}")
  Send("{ALT up}")
EndFunc

Func LEFT()
  WinActivate($hWnd)
  Send("{LEFT}")
EndFunc

Func RIGHT()
  WinActivate($hWnd)
  Send("{RIGHT}")
EndFunc

Func UP()
  WinActivate($hWnd)
  Send("{UP}")
EndFunc

Func DOWN()
  WinActivate($hWnd)
  Send("{DOWN}")
EndFunc

Касса воспринимает нажатие Scroll Lock как команду переключения клавиатуры, нажал Scroll Lock - касса слушает мою клаву, второе нажатие Scroll Lock - переключается на свою (родную) клаву.
с помощью
Код:
Send("{ScrollLock toggle}")

этого не происходит.
Пробовал и
Код:
Send("{ScrollLock On}")
Send("{ScrollLock Off}")

Тоже не работает. Не понимаю, что не так делаю.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Давай по порядку
1. У тебя в скрипте
Код:
$Button9 = GUICtrlCreateButton("F8", 416, 88, 73, 49)
$Button10 = GUICtrlCreateButton("Scroll Lock", 544, 88, 89, 49)
; ...
        Case $Button9
            GUISetState(@SW_HIDE, $Form1_1)
            ScrollLock()
            GUISetState(@SW_SHOW, $Form1_1)
        Case $Button10
            GUISetState(@SW_HIDE, $Form1_1)
            F1()
            GUISetState(@SW_SHOW, $Form1_1)

Так какую ж кнопку ты нажимаешь?

2. Вот как в справке написано http://autoit-script.ru/autoit3_docs/functions/Send.htm
Вот так и в скрипте пиши
Код:
Send("{SCROLLLOCK toggle}")

У меня нормально работает.
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
В куске который смотришь функция
Код:
$Button9 = GUICtrlCreateButton("F8", 416, 88, 73, 49)
$Button10 = GUICtrlCreateButton("Scroll Lock", 544, 88, 89, 49)
; ...
        Case $Button9
            GUISetState(@SW_HIDE, $Form1_1)
            ScrollLock()
            GUISetState(@SW_SHOW, $Form1_1)
        Case $Button10
            GUISetState(@SW_HIDE, $Form1_1)
            F1()
            GUISetState(@SW_SHOW, $Form1_1)


Сама функция ниже

Код:
Func ScrollLock()
  WinActivate($hWnd) 
  Send("{ScrollLock toggle}")  
EndFunc


не работает.
Повторюсь: При нажатии Num Lock в этом интерфейсе, на клавиатуре загорается индикатор, при нажатии на Scroll Lock на клавиатуре ноль реакции.
Можно ли как то по другому отправлять ScrollLock? Вариант
Код:
Send("{ScrollLock toggle}")


Касса похоже не понимает. Что делает это нажатие с кассой я писал в начале темы.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Давай ещё раз.

1. У тебя в скрипте
Код:
$Button9 = GUICtrlCreateButton("F8", 416, 88, 73, 49)
$Button10 = GUICtrlCreateButton("Scroll Lock", 544, 88, 89, 49)
; ...
        Case $Button9
            GUISetState(@SW_HIDE, $Form1_1)
            ScrollLock()
            GUISetState(@SW_SHOW, $Form1_1)
        Case $Button10
            GUISetState(@SW_HIDE, $Form1_1)
            F1()
            GUISetState(@SW_SHOW, $Form1_1)

Какой кнопкой ты пытаешься вызвать функцию ScrollLock() ?

2. Вот как в справке написано http://autoit-script.ru/autoit3_docs/functions/Send.htm
Вот так и в скрипте пиши. Скопируй просто и вставь в свой скрипт.
Код:
Send("{SCROLLLOCK toggle}")

У меня нормально работает.
 
Автор
ildar

ildar

Осваивающий
Сообщения
252
Репутация
29
Код:
Case $Button10
            GUISetState(@SW_HIDE, $Form1_1)
            F1()
            GUISetState(@SW_SHOW, $Form1_1)

Спасибо огромное!!!!!!! Увидел свою ошибку. На эту клавишу нужно было назначать. В спешке сместилось все.
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=e:\autoit\koda_1.7.2.8_b247_2010-04-15\forms\key.kxf
$Form1_1 = GUICreate("KeyEmulation", 643, 437, 192, 114)
$Button1 = GUICtrlCreateButton("Esc", 16, 16, 73, 49)
GUICtrlSetCursor (-1, 2)
$Button2 = GUICtrlCreateButton("F1", 152, 16, 73, 49)
$Button3 = GUICtrlCreateButton("F2", 240, 16, 73, 49)
$Button4 = GUICtrlCreateButton("F3", 328, 16, 73, 49)
$Button5 = GUICtrlCreateButton("F4", 416, 16, 73, 49)
$Button6 = GUICtrlCreateButton("F5", 152, 88, 73, 49)
$Button7 = GUICtrlCreateButton("F6", 240, 88, 73, 49)
$Button8 = GUICtrlCreateButton("F7", 328, 88, 73, 49)
$Button9 = GUICtrlCreateButton("F8", 416, 88, 73, 49)
$Button10 = GUICtrlCreateButton("Scroll Lock", 544, 88, 89, 49)
$Button11 = GUICtrlCreateButton("<", 16, 352, 81, 73)
$Button12 = GUICtrlCreateButton(">", 224, 352, 81, 73)
$Button13 = GUICtrlCreateButton("^", 120, 256, 81, 73)
$Button14 = GUICtrlCreateButton("v", 120, 352, 81, 73)
$Button15 = GUICtrlCreateButton("Tab", 16, 88, 73, 49)
$Button16 = GUICtrlCreateButton("Alt + F10", 16, 176, 73, 49)
$Button17 = GUICtrlCreateButton("Alt + 244", 104, 176, 73, 49)
$Button18 = GUICtrlCreateButton("Alt + 245", 192, 176, 73, 49)
$Button19 = GUICtrlCreateButton("Alt + 246", 280, 176, 73, 49)
$Button20 = GUICtrlCreateButton("Exit", 544, 376, 89, 49)
$Button21 = GUICtrlCreateButton("Num Lock", 544, 160, 89, 49)
$Button22 = GUICtrlCreateButton("Insert", 544, 232, 89, 49)
$Button23 = GUICtrlCreateButton("BackSpace", 544, 16, 89, 49)
$Button24 = GUICtrlCreateButton("Enter", 368, 256, 105, 169)
$Button25 = GUICtrlCreateButton("Alt + F1", 368, 176, 73, 49)
$Button26 = GUICtrlCreateButton("Alt + F2", 456, 176, 73, 49)
$Button27 = GUICtrlCreateButton("TEUDP", 544, 304, 89, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$hWnd = 0

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
			Case $Button20
            Exit
        Case $Button1
			GUISetState(@SW_HIDE, $Form1_1)
            Esc()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button2
			GUISetState(@SW_HIDE, $Form1_1)
            F1()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button3
			GUISetState(@SW_HIDE, $Form1_1)
            F2()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button4
			GUISetState(@SW_HIDE, $Form1_1)
            F3()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button5
			GUISetState(@SW_HIDE, $Form1_1)
            F4()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button6
			GUISetState(@SW_HIDE, $Form1_1)
            F5()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button7
			GUISetState(@SW_HIDE, $Form1_1)
            F6()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button8
			GUISetState(@SW_HIDE, $Form1_1)
            F7()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button9
			GUISetState(@SW_HIDE, $Form1_1)
            F8()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button10
			GUISetState(@SW_HIDE, $Form1_1)
            ScrollLock()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button11
			GUISetState(@SW_HIDE, $Form1_1)
            LEFT()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button12
			GUISetState(@SW_HIDE, $Form1_1)
            RIGHT()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button13
			GUISetState(@SW_HIDE, $Form1_1)
            UP()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button14
			GUISetState(@SW_HIDE, $Form1_1)
            DOWN()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button15
			GUISetState(@SW_HIDE, $Form1_1)
            Tab()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button16
			GUISetState(@SW_HIDE, $Form1_1)
            AltF10()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button17
			GUISetState(@SW_HIDE, $Form1_1)
            Alt244()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button18
			GUISetState(@SW_HIDE, $Form1_1)
            Alt245()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button19
			GUISetState(@SW_HIDE, $Form1_1)
            Alt246()
            GUISetState(@SW_SHOW, $Form1_1)
       	Case $Button21
			GUISetState(@SW_HIDE, $Form1_1)
            NumLock()
            GUISetState(@SW_SHOW, $Form1_1)	
        Case $Button22
			GUISetState(@SW_HIDE, $Form1_1)
            Insert()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button23
			GUISetState(@SW_HIDE, $Form1_1)
            BackSpace()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button24
			GUISetState(@SW_HIDE, $Form1_1)
            Enter()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button25
			GUISetState(@SW_HIDE, $Form1_1)
            AltF1()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button26
			GUISetState(@SW_HIDE, $Form1_1)
            AltF2()
            GUISetState(@SW_SHOW, $Form1_1)
		Case $Button27
			GUISetState(@SW_HIDE, $Form1_1)
            TEUDP()
            GUISetState(@SW_SHOW, $Form1_1)	
	EndSwitch
WEnd


Func TEUDP()
  $num = InputBox("","Введите IP кассы ","")
  Run("cmd")
  Sleep(1000)
  $hWnd = WinGetHandle('[Active]')
  ControlSend("","","","C:\TEUDP.exe " & $num)  
EndFunc

Func Esc()
  WinActivate($hWnd) 	
  Send("{Esc}")
EndFunc

Func F1()
  WinActivate($hWnd)
  Send("{F1}")
EndFunc

Func F2()
  WinActivate($hWnd)
  Send("{F2}")
EndFunc

Func F3()
  WinActivate($hWnd)
  Send("{F3}")
EndFunc

Func F4()
  WinActivate($hWnd)
  Send("{F4}")
EndFunc

Func F5()
  WinActivate($hWnd)
  Send("{F5}")
EndFunc

Func F6()
  WinActivate($hWnd)
  Send("{F6}")
EndFunc

Func F7()
  WinActivate($hWnd)
  Send("{F7}")
EndFunc

Func F8()
  WinActivate($hWnd)
  Send("{F8}")
EndFunc

Func ScrollLock()
  WinActivate($hWnd) 
  Send("{SCROLLLOCK toggle}")  
EndFunc

Func Tab()
  WinActivate($hWnd)
  Send("{Tab}")
EndFunc

Func NumLock()
  WinActivate($hWnd)
  Send("{NumLock}")
EndFunc

Func Insert()
  WinActivate($hWnd)
  Send("{Insert}")
EndFunc

Func BackSpace()
  WinActivate($hWnd)
  Send("{BackSpace}")
EndFunc

Func Enter()
  WinActivate($hWnd)
  Send("{Enter}")
EndFunc

Func AltF10()
  WinActivate($hWnd)
  Send("{ALT down}")
  Send("{F10}")
  Send("{ALT up}")
EndFunc

Func Alt244()
  WinActivate($hWnd)
  Send("{Ї}")
EndFunc

Func Alt245()
  WinActivate($hWnd)
  Send("{ї}")
EndFunc

Func Alt246()
  WinActivate($hWnd)
  Send("{Ў}")
EndFunc

Func AltF1()
  WinActivate($hWnd)
  Send("{ALT down}")
  Send("{F1}")
  Send("{ALT up}")
EndFunc

Func AltF2()
  WinActivate($hWnd)
  Send("{ALT down}")
  Send("{F2}")
  Send("{ALT up}")
EndFunc

Func LEFT()
  WinActivate($hWnd)
  Send("{LEFT}")
EndFunc

Func RIGHT()
  WinActivate($hWnd)
  Send("{RIGHT}")
EndFunc

Func UP()
  WinActivate($hWnd)
  Send("{UP}")
EndFunc

Func DOWN()
  WinActivate($hWnd)
  Send("{DOWN}")
EndFunc


Теперь все работает. Еще раз спасибо!!!!!
 
Верх