2010-01-14 18 views
12

क्या विंडोज कंसोल में महत्वपूर्ण घटनाएं प्राप्त करने का कोई तरीका है? मुझे जीयूआई के बिना जल्दी से कीडाउन और कीप घटनाओं को पाने का एक तरीका चाहिए। मैंने getch() का उपयोग करने का प्रयास किया है, लेकिन इसे कुंजीपटल नहीं मिलते हैं और प्रतीक्षा करने के लिए एक कुंजी दबाए जाने तक प्रतीक्षा की जाती है।सी ++ कंसोल कीबोर्ड घटनाएं

+0

आप कहते हैं, लेकिन समय के सबसे अधिक (है कि मैं के बारे में पता) खिड़कियों पर आप एक खिड़की के अंदर एक कंसोल का उपयोग कर रहे हैं "एक जीयूआई बिना" कोशिश कर सकते हैं। जिन मामलों में आपके पास खिड़की है, आप उस विंडो को हुक कर सकते हैं और इसके संदेशों को कैप्चर कर सकते हैं। – Zac

उत्तर

7

आप GetKeyState या GetAsyncKeyState का उपयोग कर सकते हैं, लेकिन यह आपको कीडाउन/कीप घटनाएं नहीं देगा। यह केवल आपको बताएगा कि वर्तमान में कौन सी कुंजी नीचे हैं।

तो यदि आपको वास्तव में कीडाउन/कीप घटनाएं प्राप्त करने की आवश्यकता है, तो आप एक हुक इंस्टॉल कर सकते हैं। एक कंसोल विंडो में एक विंडो हैंडल है जिसका स्वामित्व विंडोज़ में कोड और एक संदेश पंप है, जिसका भी विंडोज़ में कोड है।

GetConsoleWindow का उपयोग कर आप कंसोल विंडो के विंडो हैंडल प्राप्त कर सकते हैं तो कंसोल विंडो पर भेजे गए संदेशों को सुनने के लिए SetWindowsHookEx का उपयोग करके WH_CALLWNDPROC हुक इंस्टॉल करें।

आप इसके बजाय WH_MSGFILTER हुक आज़मा सकते हैं। मुझे नहीं पता कि यह कंसोल विंडोज़ के लिए काम करता है, लेकिन अगर यह काम करता है तो इसे अनदेखा करने के लिए कम संदेश उत्पन्न होंगे।

8

ReadConsoleInput() API का उपयोग करें। KEY_EVENT की घटनाओं के लिए देखें। यह सभी कीडाउन घटनाओं (Ctrl-key, shift-key, रोक-कुंजी को पढ़ा नहीं जा सकता) के लिए काम नहीं करेगा, लेकिन अधिकांश को पढ़ा जा सकता है।

अवरुद्ध करने से बचने के लिए GetNumberOfConsoleInputEvents का उपयोग करें।

1

कई तरीके हैं। GetKeyboardState सबसे स्पष्ट में से एक होगा।

2

मैं सिर्फ उत्सुक था, इस तरह के एक तार्किक प्रश्न के बारे में Google, पर कोई स्पष्टीकरण नहीं है, इसलिए किसी को इसे यहां पूछना है। इसलिए मैं के लिए googled: "कीबोर्ड की घटनाओं सांत्वना आवेदन" और लगता है क्या ... पहले 2 लिंक दिलचस्प हैं (लेकिन दुर्भाग्य से, वास्तव में नहीं आपके प्रश्न का उत्तर):

+3

मैंने एक ही चीज़ को अनुमान लगाया कि क्या ... तीसरा लिंक इस पृष्ठ पर इंगित करता है। – avakar

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