我有一个 DDE 客户端应用程序,它使用SendMessage()WINAPI 连接到 DDE 服务器应用程序。在SendMessage()请求连接到 DDE 服务器时挂起的呼叫之后。DDE 客户端应用程序和服务器应用程序都在 VC++ 中。
SendMessage((HWND) -1,WM_DDE_INITIATE,(WPARAM) m_hWnd,MAKELPARAM(hService,hTopic));
现在SendMessage()它在做什么被绞死了?基本上它是WM_DDE_INITIATE向系统中的所有窗口广播窗口消息。它所针对的窗口(DDE 服务器)应处理该消息并应以确认回复。收到确认后,SendMessage()呼叫完成并连接客户端。
在我们的例子中,它正在挂起并且永远不会返回,因此我们的 DDE 客户端应用程序正在挂起。
我在网上搜索,发现SendMessage()通常不推荐使用广播,因为它会挂很多次。
我有 DDE 客户端应用程序和 DDE 服务器应用程序的代码。
让我知道是否有某种方法可以检索 DDE 服务器窗口句柄或某种方法可以为 DDE 服务器窗口分配一个唯一名称。
通过这样做,我相信在客户端我可以从唯一名称(使用FindWindow()winapi)检索 DDE 服务器的窗口句柄,而不是使用广播,SendMessage()我可以使用窗口句柄将消息直接发送到 DDE 服务器。
如果您觉得上述获取 DDE 服务器窗口句柄的方法不可行或不推荐,那么请告诉我一些其他使用SendMessage()winapi 连接到 DDE 服务器的方法。