2011-09-21 10 views
11

में स्पर्श घटनाओं अनुकरण करने के लिए है वहाँ एक रास्ता Windows 8 में स्पर्श घटनाओं (और अधिमानतः 7 में विंडोज़) अनुकरण करने के लिए नहीं है।
मैं जानता हूँ कि एक परियोजना मल्टी टच विस्टा कहा जाता है, लेकिन मैं अपने एक सा overkill लग रहा है और मैं इसे सही ढंग से एकाधिक स्क्रीन के साथ काम नहीं मिला।
मुझे क्या करना चाहते हैं बहुत सरल है, मैं एक ऐप्लिकेशन है जो या एक से अधिक चूहों की कोई आवश्यकता नहीं है कि जैसे किसी भी बात के लिए Windows के लिए स्पर्श इवेंट भेज सकते हैं शुरू करना चाहते हैं।
यह किया या मैं एक (MMV) ड्राइवर है कि मुझे क्या करना होगा जा सकता है?एक तरह से विंडोज 8

धन्यवाद
/जिमी

उत्तर

5

मैं कुछ इसी तरह की तलाश कर रहा था और यह आलेख Simulating Touch Input in Windows Developer preview using Touch Injection API और sample code (सी ++) आपके प्रश्न का उत्तर दे सकता है। बहरहाल, यह केवल Windows 8 (नहीं विंडोज 7) पर काम करने लगता है।

यह टैप, होल्ड, ड्रैग, पिंच/पैन, घुमाने और क्रॉस-स्लाइड को अनुकरण करता है।

यहाँ स्पर्श (नल) कोड है:

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 

एक अन्य लेख: Getting Started with Windows Touch Gestures

4

मैं इसे अपने आप कोशिश करने का मौका नहीं मिला है, लेकिन this article के अनुसार, सिम्युलेटर Windows 8 देव पूर्वावलोकन के साथ शामिल का उपयोग कर मल्टी टच जूम और रोटेशन इशारों का अनुकरण के लिए अनुमति देता है एक माउस। Tools for building Metro style apps

+1

मैं सिम्युलेटर मैं स्पर्श घटना भेजना चाहते हैं का उपयोग नहीं करना चाहते हैं ओएस सीधे करने के लिए। –

0

बनाना एक आभासी छुपाया चालक एक ही रास्ता हो गया लगता है:

आप इस पर लगभग इस बिल्ड सम्मेलन सत्र के 35:40 का एक प्रदर्शन देख सकते हैं।

4
समाधान जो जिनमें से User32.dll में पैक आता है InjectTouchInput के लिए सी ++ नमूना कोड के लिए अंक के लिए इसके अलावा

Windows 8 सी # समाधान यहां पाया जा सकता:

InjectTouchInput Windows 8 C# not working (returns false)