我有一个 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 服务器的方法。