मेरे कीबोर्ड हुक में, प्रत्येक कीप्रेस को ध्वज मिलता है जो बताता है कि यह इंजेक्शन दिया गया था या नहीं। http://msdn.microsoft.com/en-us/library/ms644967(VS.85).aspxमैं कम-स्तर 8 बिट झंडे को सशर्त के रूप में कैसे उपयोग करूं?
मैंने एलपीराम से एक KBDLLHOOKSTRUCT को आसवित किया है। मैं kbd.flags.XXX तक पहुंच सकता हूं। मुझे नहीं पता कि इस 8 बिट ध्वज को if (injected) {...
में सशर्त टाइप करने के तरीके को कैसे परिवर्तित किया जाए, मुझे पता है कि इसका उपयोग कैसे किया जाए।
यदि आप में से एक स्मार्ट कंप्यूटर-विज्ञान प्रकार मेरी मदद करेगा तो मैं वास्तव में इसकी सराहना करता हूं।
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
KBDLLHOOKSTRUCT kbd = new KBDLLHOOKSTRUCT();
Marshal.PtrToStructure(lParam, kbd);
//if (injected) {...
चीयर्स!
यह (और यहाँ दूसरों है कि मैं कोशिश की है) 'टाइप का पहला मौका अपवाद' सिस्टम फेंक रहा है। ऑर्ग्यूमेंट एक्सेप्शन 'foofoo.exe' में हुआ है, जैसा कि मैंने पिछले कीबोर्ड हुक कोड को भी गड़बड़ कर लिया है। क्या देता है? यह संकलन भी नहीं कर रहा है जब तक कि मैं कोष्ठक नहीं जोड़ता: 'bool isInjected = ((kbd.flags & LLKHF_INJECTED)! = 0);' ... क्या यह कोड बदल रहा है? – cksubs
अतिरिक्त माता-पिता कोड नहीं बदल रहे हैं - वे बस मेरी मूर्खतापूर्ण प्राथमिकता त्रुटि को ठीक करते हैं। उत्तर अपडेट किया गया। – itowlson
कोई विचार नहीं है कि ArgumentException कहां से आ रहा है, क्योंकि आप केवल झंडे के मैदान से पढ़ रहे हैं। क्या वास्तव में एक अपवाद फेंक दिया जा रहा है या क्या यह पहली मौका अपवाद के बारे में एक डीबग संदेश है (यानी सीएलआर के भीतर आंतरिक रूप से पकड़ा और संभाला जाता है)? यदि पूर्व, अपवाद का स्टैक ट्रेस क्या है? क्या आप अभी भी इसे प्राप्त करते हैं यदि आप केवल कंसोल। राइटलाइन (kbd.flags)?एक बार जब आप इन्हें देख लेते हैं, तो हो सकता है कि आप एक अलग प्रश्न बनाना चाहें क्योंकि यह शायद शुद्ध बिट-ट्विडलिंग प्रश्न से संबंधित नहीं है "मैं सी # में बिटवाई झंडे का उपयोग कैसे करूं?", अधिक संभावना है कि एक मार्शलिंग मुद्दा। – itowlson