2012-01-17 16 views
23

मैं एक सांत्वना अनुप्रयोग है कि महत्वपूर्ण यह है कि सांत्वना स्क्रीन पर दबाया जाता है प्रदर्शित करेगा बनाना चाहते हैं, मैं इस कोड अब तक किए गए:कैसे सांत्वना आवेदन में कुंजी दबाएँ घटना को संभालने के लिए

static void Main(string[] args) 
    { 
     // this is absolutely wrong, but I hope you get what I mean 
     PreviewKeyDownEventArgs += new PreviewKeyDownEventArgs(keylogger); 
    } 

    private void keylogger(KeyEventArgs e) 
    { 
     Console.Write(e.KeyCode); 
    } 

मैं जानना चाहता हूँ , मुझे मुख्य में क्या टाइप करना चाहिए ताकि मैं उस ईवेंट को कॉल कर सकूं?

उत्तर

20

सांत्वना आवेदन आप यह कर सकते हैं के लिए, do while पाश रन जब तक आप प्रेस x

public class Program 
{ 
    public static void Main() 
    { 

     ConsoleKeyInfo keyinfo; 
     do 
     { 
      keyinfo = Console.ReadKey(); 
      Console.WriteLine(keyinfo.Key + " was pressed"); 
     } 
     while (keyinfo.Key != ConsoleKey.X); 
    } 
} 

यदि आपका सांत्वना आवेदन ध्यान केंद्रित है केवल काम करेंगे। यदि आप सिस्टम विस्तृत कुंजी प्रेस घटनाओं को इकट्ठा करना चाहते हैं तो आप windows hooks

12

दुर्भाग्यवश कंसोल क्लास में उपयोगकर्ता इनपुट के लिए परिभाषित कोई ईवेंट नहीं है, हालांकि यदि आप दबाए गए वर्तमान वर्ण को आउटपुट करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं :

static void Main(string[] args) 
{ 
    //This will loop indefinitely 
    while (true) 
    { 
     /*Output the character which was pressed. This will duplicate the input, such 
      that if you press 'a' the output will be 'aa'. To prevent this, pass true to 
      the ReadKey overload*/ 
     Console.Write(Console.ReadKey().KeyChar); 
    } 
} 

Console.ReadKey एक ConsoleKeyInfo वस्तु है, जो कुंजी जो दबाया गया था के बारे में जानकारी का एक बहुत कुछ समाहित देता है।