RAW INPUT DATA EN VFP9SP2

46 views
Skip to first unread message

Fernando Mora

unread,
Oct 25, 2016, 12:22:48 AM10/25/16
to Comunidad de Visual Foxpro en Español
Alguien mas ya intento usar Raw Input Data?, me captura bien el tecaldo y detecto bien al mouse, pero no obtengo los resultados de posición X y Y del cursor, por ahora estoy usando GetCursorPos, pero me gustaria obtener ese dato directamente de la entrada en bruto del mouse, aquí el codigo que estoy usando, alguien me puede decir que esta mal? porque no me devuelve la posición X Y? Gracias de antemano. 

PARAMETERS hRawinput As Number

LOCAL nBufsize, cHeader, cRawdata
nBufsize=0
GetRawInputData(m.hRawinput, RID_INPUT, NULL, @nBufsize, RAWINPUTHEADER_SIZE)
cRawdata = REPLICATE(CHR(0), nBufsize)

WITH THIS
.dwType = .Buf2Dword(SUBSTR(cRawdata,1,4))
.dwSize  = .Buf2Dword(SUBSTR(cRawdata,5,4))
.hDevice = .Buf2Dword(SUBSTR(cRawdata,9,4))
.wParam  = .Buf2Dword(SUBSTR(cRawdata,13,4))

IF .dwType = RIM_TYPEKEYBOARD
.kbdFlags = .Buf2Word(SUBSTR(cRawdata,19,2))
IF INLIST(.kbdFlags, 0, 2)
.kbdMakeCode = .Buf2Word(SUBSTR(cRawdata,17,2))
.kbdReserved = .Buf2Word(SUBSTR(cRawdata,21,2))
.kbdVKey = .Buf2Word(SUBSTR(cRawdata,23,2))
.kbdMessage = .Buf2Dword(SUBSTR(cRawdata,25,4))
.kbdExtraInformation = .Buf2Dword(SUBSTR(cRawdata,29,4))
.kbdAsciiCode = .VKeyToASCII( .kbdVKey, .kbdMakeCode)
RETURN .T.
ENDIF
ENDIF

IF .dwType = RIM_TYPEMOUSE
.musFlags  = .buf2Word(SUBSTR(cRawdata,17,2))
IF INLIST( .musFlags, 0, 2)
.mulButtons = .buf2Dword(SUBSTR(cRawdata,19,4))
.musButtonFlags = .Buf2Word(SUBSTR(cRawdata,23,2))
.musButtonData = .buf2Word(SUBSTR(cRawdata,23,2))
.mulRawButtons = .Buf2Dword(SUBSTR(cRawdata,25,4))
.mlLastX = .buf2Dword(SUBSTR(cRawdata,29,4))
.mlLastY = .buf2Dword(SUBSTR(cRawdata,33,4))
.mulExtraInformation = .buf2Dword(SUBSTR(cRawdata,37,4))
           RETURN .T.
ENDIF
ENDIF
ENDWITH

RETURN .F.

*-------------- METODO Buf2Dword
PARAMETERS cBuffer
RETURN ASC(SUBSTR(cBuffer, 1,1)) + ;
  BITLSHIFT(ASC(SUBSTR(cBuffer, 2,1)), 8) + ;
  BITLSHIFT(ASC(SUBSTR(cBuffer, 3,1)), 16) + ;
  BITLSHIFT(ASC(SUBSTR(cBuffer, 4,1)), 24)

*-------------- METODO Buf2Word
PARAMETERS lcBuffer
RETURN ASC(SUBSTR(lcBuffer, 1,1)) + ASC(SUBSTR(lcBuffer, 2,1)) * 256



ZeRoberto

unread,
Oct 25, 2016, 12:37:43 AM10/25/16
to publicesvfoxpro
Que es lo quieres hacer? un keylogger?

Fernando Mora

unread,
Oct 25, 2016, 2:47:53 AM10/25/16
to Comunidad de Visual Foxpro en Español
Tengo un cliente que usa un portal web, donde ingresan datos varios usuario, se necesita que al ingresar números de cédulas, se revise si esos números no constan en una base de datos de personas reportadas, que no pueden recibir el servicio. El portal web no es propio, por lo tanto me encargaron que desarrolle un programa que monitoree los datos que ingresan al portal. Ya lo tengo hecho, como expongo, estoy capturando los datos del teclado sin problemas, pero el mouse me tira 0, solo llega bien la estructura de encabezado, 16 primeros valores, los restantes 24 me devuelve 0, al parecer no estoy tomando bien los datos del buffer, o no se si dependa de la constante RAWINPUTHEADER_SIZE  ¿manejas RAW INPUT DATA?
Reply all
Reply to author
Forward
0 new messages