/

Быстрофорум

Самый быстрый форум на новом движке. Здесь можно все!

(при регистрации нужно заполнить все поля)

ТемыКак отследить и обработать события от USB HID устройства? Javascript, AHK ТС: D_Pavel Ответов: 6
Страница: 0

Admin 5 лет назад 0 байт Если на AHK подойдет, то вот пример с GUI.
Gui +LastFound -Resize -MaximizeBox -MinimizeBox
Gui, Add, Edit, vtxt,
OnMessage(0x00FF, "InputMsg")
Gui, Show

VarSetCapacity(uDev, (8 + A_PtrSize), 0)
NumPut(1, uDev, 0, "UShort")
NumPut(8,     uDev, 2, "UShort")
NumPut(0x00001000,     uDev, 4, "UInt")
NumPut(WinExist(),    uDev, 8, "Ptr")
res := DllCall("RegisterRawInputDevices", "Ptr", &uDev, "UInt", 1, "UInt", 8 + A_PtrSize)
Return

InputMsg(wParam, lParam) {
    Local r, h
    Critical
    VarSetCapacity(uRawInput, 31)
    DllCall("GetRawInputData", "UInt", lParam, "UInt", 0x10000003, "Ptr", &uRawInput, "UInt*", 31, "UInt", 8 + A_PtrSize * 2)
	GuiControl,, txt, % NumGet(&uRawInput, 24, "long")
}
в памяти по адресу &uRawInput со смещения 24 до смещения 30 будут находиться полученные от устройства USB HID данные.
D_Pavel забанен D_Pavel 5 лет назад 0 байт Спасибо, работает!
Assmody 5 лет назад 0 байт JavaScript такого никогда не сможет! Еще раз повторяю, кури за безопасность )))
D_Pavel забанен D_Pavel 5 лет назад 0 байт Все сможет, золупа ты конская! ))) Я еще вчера сделал:
<!DOCTYPE html>
<html>
<head>
	<script>
		onload = function (){
			WinAPI = new ActiveXObject("DynamicWrapperX.2");
			WinAPI.Register ("user32", "CreateWindowExW", "i=uwwullllhhhp", "r=h");
			WinAPI.Register ("user32", "DefWindowProcW", "i=hull", "r=l");
			WinAPI.Register ("user32", "DestroyWindow",    "i=h", "r=l");
			WinAPI.Register ("user32", "SetWindowLong", "i=hll", "r=l");
			WinAPI.Register ("user32", "RegisterRawInputDevices", "i=puu", "r=l");
			WinAPI.Register ("user32", "GetRawInputData", "i=hupuu", "r=l");

			var txt = new Array(6);
			var PtrSize = WinAPI.Bitness() / 8;
			var uRawInput = WinAPI.MemAlloc( 31 );
			var size = WinAPI.MemAlloc( 4 );
			function WndProc(hWnd, uMsg, wParam, lParam){
				if (uMsg == 255){
					WinAPI.NumPut (31, size, 0, "u");
					WinAPI.GetRawInputData(lParam, 0x10000003, uRawInput, size, 8 + PtrSize * 2);
					data.value = WinAPI.NumGet( uRawInput, 24, "c" );//Вот оно! Байты со смещения 24 и до 30
				}
				return WinAPI.DefWindowProcW(hWnd, uMsg, wParam, lParam);
			}
			var pWndProc = WinAPI.RegisterCallback(WndProc, "i=hull", "r=l");

			var hWnd = WinAPI.CreateWindowExW(0, "STATIC", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
			WinAPI.SetWindowLong (hWnd, -4, pWndProc)

			var strucSize = 8 + PtrSize;
			var uDev = WinAPI.MemAlloc( strucSize )

			WinAPI.NumPut (1, uDev, 0, "t");
			WinAPI.NumPut (8, uDev, 2, "t");
			WinAPI.NumPut (0x00001000, uDev, 4, "u");
			WinAPI.NumPut (hWnd, uDev, 8, "p");
			
			WinAPI.RegisterRawInputDevices(uDev, 1, strucSize);
			onbeforeunload = function () { WinAPI.DestroyWindow(hWnd); }
		}
	</script>
</head>
<body>
<input id=data>
</body>

</html>
Бот форума 5 лет назад 0 байт Информация: D_Pavel забанил D_Pavel
Бот форума 5 лет назад 0 байт Информация: D_Pavel забанил Бот форума
Бот форума 5 лет назад 0 байт Информация: D_Pavel забанил Бот форума
Страница: 0


Send (Ctrl+Enter) отправить