2011-09-21 16 views
11

C'è un modo per simulare gli eventi di tocco in Windows 8 (e preferibilmente in Windows 7).
So che c'è un progetto chiamato Multi touch Vista, ma ritengo che sia un po 'eccessivo e non ho mai funzionato correttamente con più schermi.
Quello che voglio fare è molto semplice, voglio avviare un'applicazione in grado di inviare eventi touch a Windows senza bisogno di mouse multipli o cose del genere.
Può essere fatto o ho bisogno di un driver (MMV) per farlo?C'è un modo per simulare gli eventi di tocco in Windows 8

Grazie
/Jimmy

risposta

5

Stavo cercando qualcosa di simile e ho trovato questo articolo Simulating Touch Input in Windows Developer preview using Touch Injection API e sample code (C++) può rispondere alla tua domanda. Tuttavia, questo sembra funzionare solo su Windows 8 (non su Windows 7).

Simula Tap, Hold, Drag, Pinch/Pan, Rotate e Cross-Slide.

Ecco il tocco (Tap) Codice:

POINTER_TOUCH_INFO contact; 
InitializeTouchInjection(1, TOUCH_FEEDBACK_DEFAULT); // Here number of contact point is declared as 1. 
memset(&contact, 0, sizeof(POINTER_TOUCH_INFO)); 

contact.pointerInfo.pointerType = PT_TOUCH; 
contact.pointerInfo.pointerId = 0;   //contact 0 
contact.pointerInfo.ptPixelLocation.y = 200; // Y co-ordinate of touch on screen 
contact.pointerInfo.ptPixelLocation.x = 300; // X co-ordinate of touch on screen 

contact.touchFlags = TOUCH_FLAG_NONE; 
contact.touchMask = TOUCH_MASK_CONTACTAREA | TOUCH_MASK_ORIENTATION | TOUCH_MASK_PRESSURE; 
contact.orientation = 90; // Orientation of 90 means touching perpendicular to screen. 
contact.pressure = 32000; 

// defining contact area (I have taken area of 4 x 4 pixel) 
contact.rcContact.top = contact.pointerInfo.ptPixelLocation.y - 2; 
contact.rcContact.bottom = contact.pointerInfo.ptPixelLocation.y + 2; 
contact.rcContact.left = contact.pointerInfo.ptPixelLocation.x - 2; 
contact.rcContact.right = contact.pointerInfo.ptPixelLocation.x + 2; 


contact.pointerInfo.pointerFlags = POINTER_FLAG_DOWN | POINTER_FLAG_INRANGE | POINTER_FLAG_INCONTACT; 
InjectTouchInput(1, &contact); // Injecting the touch down on screen 

contact.pointerInfo.pointerFlags = POINTER_FLAG_UP; 
InjectTouchInput(1, &contact); // Injecting the touch Up from screen 

Un altro articolo: Getting Started with Windows Touch Gestures

4

non ho avuto la possibilità di provare io stesso, ma secondo this article, il simulatore incluso con il Windows 8 Dev Preview permette per la simulazione multi-touch zoom e rotazione gesti utilizzando un topo.

è possibile vedere una dimostrazione di questo a circa 35:40 di questa sessione della conferenza BUILD: Tools for building Metro style apps

+1

non voglio usare il simulatore che voglio inviare evento di tocco direttamente al sistema operativo. –

0

Creazione di un driver Hid virtuale sembra essere l'unico modo.

Problemi correlati