मैं कुछ प्रक्रिया में एक डीएलएल इंजेक्शन कर रहा हूं, डीएलएल में एक वर्कर थ्रेड है जो एक संदेश लूप चला रहा है।इंजेक्शन डीएलएल में वर्कर थ्रेड को ठीक से कैसे समाप्त करें?
मैं थ्रेड को ठीक से छोड़ना चाहता हूं यानी एक छोड़ संदेश (पोस्ट थ्रेड मैसेज) पोस्ट करें और इसके लिए प्रतीक्षा करें (WaitForSingleObject)।
मैं इस धागे को बंद करने के लिए कहां इंतजार कर सकता हूं? मैं इसे DLL_PROCESS_DETACH पर नहीं कर सकता क्योंकि तब तक सभी धागे बंद या समाप्त हो जाते हैं और मुझे नहीं पता कि प्रक्रिया कब बंद होने वाली है।
मेरा एकमात्र विचार था, क्या मुख्य धागा संदेश लूप को रोकने और WM_CLOSE \ DESTROY msgs के लिए देखने का कोई तरीका है?
मुझे किसी भी अन्य विचार \ समाधान सुनना अच्छा लगेगा।
संपादित करें:
मुख्य थ्रेड WH_CALLWNDPROC साथ SetWindowsHookEx का उपयोग कर हुक करने की कोशिश की, लेकिन यह काम किया नहीं था बहुत अच्छी तरह से, मैं हुक और धागे के संदेशों को प्राप्त करने में कामयाब रहे। हालांकि, मुझे केवल WM_DESTROY और WM_NCDESTROY WM_QUIT संदेश प्राप्त नहीं हुआ था और वे सभी विंडोज़ से जुड़े थे।
धन्यवाद,
ओमर
धन्यवाद, कोशिश कर रहा है, ठीक वैसे ही लगता है जो मैं देख रहा हूं :) – Omer
यह काफी अच्छा काम नहीं करता है, मैं थ्रेड के संदेशों को हुक और प्राप्त करने में कामयाब हूं। हालांकि, मुझे केवल WM_DESTROY और WM_NCDESTROY WM_QUIT संदेश प्राप्त नहीं होता है और वे सभी विंडोज़ से जुड़े हुए हैं। – Omer
WM_QUIT के बारे में जागरूक होने के लिए, WH_CALLWNDPROC गलत प्रकार का हुक उपयोग करने के लिए है (क्योंकि विंडो प्रक्रिया को WM_QUIT के साथ नहीं कहा जा रहा है)। WM_QUIT के बारे में जागरूक होने के लिए आपको WH_GETMESSAGE हुक का उपयोग करने की आवश्यकता है। –