मैंने एक साधारण Win32 कंसोल एप्लिकेशन बनाया है जो एक छिपी हुई संदेश-केवल विंडो बनाता है और संदेशों के लिए प्रतीक्षा करता है, पूर्ण कोड नीचे है।कंसोल एप्लिकेशन में केवल संदेश विंडो का उपयोग करके संदेश कैसे प्राप्त करें?
#include <iostream>
#include <Windows.h>
namespace {
LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_COPYDATA)
std::cout << "Got a message!" << std::endl;
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
}
int main()
{
WNDCLASS windowClass = {};
windowClass.lpfnWndProc = WindowProcedure;
LPCWSTR windowClassName = L"FoobarMessageOnlyWindow";
windowClass.lpszClassName = windowClassName;
if (!RegisterClass(&windowClass)) {
std::cout << "Failed to register window class" << std::endl;
return 1;
}
HWND messageWindow = CreateWindow(windowClassName, 0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, 0, 0);
if (!messageWindow) {
std::cout << "Failed to create message-only window" << std::endl;
return 1;
}
MSG msg;
while (GetMessage(&msg, 0, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
हालांकि, मुझे किसी अन्य एप्लिकेशन से कोई संदेश नहीं मिल रहा है। GetMessage()
बस ब्लॉक और कभी वापस नहीं आते हैं। मैं FindWindowEx()
का उपयोग उसी संदेश नाम के साथ करता हूं जो एक संदेश भेजता है, और यह विंडो पाता है। बस संदेश स्पष्ट रूप से प्राप्त नहीं किया जा रहा है।
क्या मैं यहां कुछ गलत कर रहा हूं? विंडो संदेश प्राप्त करने वाले सबसे कम एप्लिकेशन क्या हैं?
वहाँ किसी कारण आप कर रहे है वहाँ खिड़की प्रसंस्करण कास्टिंग? ऐसा लगता है कि यह पहले से ही एक WNDPROC है। – HerrJoebob
@HerrJoebob आप सही हैं, आवश्यक नहीं लगता है। – futlib