यदि मेरे पास एक हैंडल के साथ एक कंसोल एप्लिकेशन है जो इसे स्थापित करता है;सी ++: कंसोल एप्लिकेशन के लिए एक नया wndProc कैसे सेट करें?
HWND hWnd = GetConsoleWindow();
फिर मैं विंडो के लिए एक नया wndProc कैसे स्थापित करूं?
मैं
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)conProc);
का उपयोग कर के साथ conProc रूप
LRESULT CALLBACK conProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_NCHITTEST:
return HTCAPTION;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
परिभाषित किया जा रहा करने की कोशिश की लेकिन यह काम नहीं करता है और कहता है "त्रुटि कोड: 5 - प्रवेश निषेध है" GetLastError()
मैं समझता हूँ पर कि इस तरह कंसोल एप्लिकेशन को संशोधित करना बहुत मुश्किल है, क्योंकि यह एक csrss.exe एप्लिकेशन है और सब कुछ है, लेकिन मैं अभी भी कोशिश करना चाहता हूं .. धन्यवाद।
क्या है कि * के लिए * है के आधार पर आप [कंसोल प्रोजेक्ट] मिल सकता है (http: // sourceforge .NET/परियोजनाओं/कंसोल /) उपयोगी। –
यह दिलचस्प है क्योंकि मैं कहने जा रहा था कि आप इसके साथ जुड़े 'WNDCLASSEX' को पकड़ सकते हैं और अपनी खिड़की को उस के आधार पर बना सकते हैं, लेकिन यह' WNDCLASSEX' को पकड़ना थोड़ा मुश्किल है। 'GetClassInfoEx' को मॉड्यूल हैंडल की आवश्यकता है, और उस हैंडल को परेशान करना मुश्किल है। यहां तक कि 'CreateToolhelp32 स्नैपशॉट' स्पष्ट रूप से बताता है कि आप csrss.exe के साथ इसका उपयोग नहीं कर सकते हैं। – chris