2010-06-17 12 views
10

मेरे पास एक पीसी से जुड़े दो कीबोर्ड हैं। टीएमएमओ 1 और दूसरे में टीएममो 2 में टाइप करने के लिए प्रयोग किया जाता है। दोनों को एक ही समय में टाइप करने की अनुमति है। समस्या यह है कि मैं इस बात को अलग नहीं कर सकता कि किस कुंजीपटल-ने टाइप किया है और किस कीबोर्ड-दो ने टाइप किया है।डेल्फी में एकाधिक कीबोर्ड कैसे अंतर करें?

क्या अंतर करने का कोई तरीका है, कौन सा डिवाइस कुछ इनपुट आया था?

उत्तर

31

@Dian, आप कीबोर्ड रजिस्टर और डिवाइस (कीबोर्ड) जहां इनपुट से आया है निर्धारित करने के लिए WM_INPUT संदेश पर नजर रखने के RegisterRawInputDevices फ़ंक्शन का उपयोग कर सकते हैं।

जांच अधिक जानकारी के लिए लिंक शोध करे

+1

+1 कुछ नया (दोबारा) सीख लिया। thx –

+0

मुझे अनुमान है कि मुझे सी # कोड का डेल्फी संस्करण बनाना होगा? * श्वास * मैं कोशिश करूंगा। उत्तर देने के लिए धन्यवाद! : डी – Dian

+0

मुझे नहीं पता था कि आप विंडोज़ में ऐसा कर सकते हैं। –

0

जहां तक ​​मुझे पता है कि कुंजीपटलों को अलग करने का कोई तरीका नहीं है, तो आपने कीबोर्ड ड्राइवर को हुक किया है। विंडोज़ एप्लिकेशन को ठोस इनपुट मॉडल प्रदान करते हैं, इसलिए कुंजीपटल, दूसरा कीबोर्ड, आईआर रिमोट कंट्रोल, या SendInput API फ़ंक्शन का उपयोग करने वाले किसी अन्य प्रोग्राम से इनपुट प्राप्त करने के लिए कोई अंतर नहीं है।

+0

यह गलत है। [कच्चा इनपुट] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx) आपको विभिन्न इनपुट उपकरणों से इनपुट समझने की अनुमति देता है। एक निम्न-स्तरीय कीबोर्ड हुक का उपयोग करके आप कॉल से वास्तविक इनपुट और इनपुट के बीच 'SendInput' में अंतर भी कर सकते हैं। [KBDLLHOOKSTRUCT] के * झंडे * फ़ील्ड (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644967.aspx) संरचना इस जानकारी को लेती है। – IInspectable

संबंधित मुद्दे