2013-02-25 69 views
5

Many exampleskeybd_event का उपयोग करने के लिए, bScan पैरामीटर के लिए मान 0x45 है।keybd_event में bScan पैरामीटर मान 0x45 का अर्थ क्या है?

0x45 मान का अर्थ क्या है?

मैं 0x45 was a keyboard scancode इंप्रेशन के तहत था, लेकिन चूंकि इसका उपयोग विभिन्न प्रकार की चाबियों के लिए किया जाता है, इसलिए मैं इसके बारे में इतना निश्चित नहीं हूं।

मेरा लक्ष्य keybd_event या तो .NET P/Invoke, या डेल्फी से उपयोग करना है, और प्रकारों को अधिक प्रतिबंधित (उदाहरण के लिए enums या flaged enums के लिए उपयोग करना) ताकि मेरा कोड बनाए रखना आसान हो जाए।

उत्तर

5

यह वास्तव में एक स्कैन कोड है और कई कीबोर्ड के लिए यह न्यूमॉक कुंजी के लिए स्कैन कोड है।

keybd_event के दस्तावेज़ से जुड़ा उदाहरण कोड NumLock स्थिति को टॉगल करने का एक उदाहरण है। और इसलिए स्वाभाविक रूप से 0x45 स्कैन कोड के रूप में उपयोग किया जाता है। मेरा अनुमान है कि आपने पाया कि कई अन्य उदाहरणों ने बस अंधेरे से कॉपी किया है कि keybd_event एमएसडीएन उदाहरण से मूल्य। applications typically ignore the scan code के बाद से और वर्चुअल कुंजी कोड का जवाब देते हुए, यह आमतौर पर कोई फर्क नहीं पड़ता कि स्कैन कोड के रूप में क्या मूल्य पारित किया जाता है।

अंत में, आप keybd_event के बजाय SendInput का उपयोग करना चाहेंगे। कारण यह है कि वह पूर्व आपको कतार में घटनाओं का अनुक्रम देने की अनुमति देता है। keybd_event के साथ आप एक समय में कतार में ईवेंट डालते हैं और यह संभव है कि आपकी फ़ेक्ड घटनाएं वास्तविक घटनाओं के साथ छेड़छाड़ की जा सकें। और यह समस्या मुख्य कारणों में से एक है क्यों SendInput पेश किया गया था।

+1

डेल्फी स्कैन कोड जानकारी को अनदेखा करता है, पूर्व में 'ऑनकेडाउन' ईवेंट उत्पन्न करता है। अगर किसी को कुंजी स्कैन कोड निकालने की आवश्यकता है तो उसे सीधे संबंधित विंडोज संदेश (पूर्व WM_KEYDOWN) को संभालना चाहिए। – kludg

+0

धन्यवाद। मैं [SendInput] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310) और [पी/SendInput को आमंत्रित करें] (http://www.pinvoke.net/default) दूंगा। एएसपीएक्स/user32.sendinput) एक शॉट। इस पर बाद में वापस आ जाएगा। –