DDE服务器在托管模式下未建立连接
DDE server not establishing connection when in hosted mode
我有一个Winforms应用程序,它在一个控件内托管一个C++应用程序(经过一些修改的SUMA pdf查看器)。
我希望能够双向发送DDE,当C++是独立的时,可以正常工作但是,在托管模式下,我无法启动Winforms应用程序到Sumatra的DDE连接。
我在C#中使用NDDe,这是我的代码:
class SumatraCommander : DdeClient
{
public SumatraCommander() : base("SUMATRA", "control")
{
}
public void MoveDocuments(ClientsQuestion question)
{
if (!this.IsConnected) this.Connect(); // this line fails only when sumatra
//is hosted
}
}
这是来自苏门答腊的winapi消息处理
case WM_DDE_INITIATE:
return OnDDEInitiate(hwnd, wParam, lParam);
启动功能:
LRESULT OnDDEInitiate(HWND hwnd, WPARAM wparam, LPARAM lparam)
{
DBG_OUT("received WM_DDE_INITIATE from %p with %08lxn", (HWND)wparam, lparam);
ATOM aServer = GlobalAddAtom(PDFSYNC_DDE_SERVICE);
ATOM aTopic = GlobalAddAtom(PDFSYNC_DDE_TOPIC);
if (LOWORD(lparam) == aServer && HIWORD(lparam) == aTopic) {
if (!IsWindowUnicode((HWND)wparam))
DBG_OUT("The client window is ANSI!n");
DBG_OUT("Sending WM_DDE_ACK to %pn", (HWND)wparam);
SendMessage((HWND)wparam, WM_DDE_ACK, (WPARAM)hwnd, MAKELPARAM(aServer, 0));
}
else {
GlobalDeleteAtom(aServer);
GlobalDeleteAtom(aTopic);
}
return 0;
}
如果我覆盖了C#Winforms控件的消息处理,这会有帮助吗?
或者C++代码中有什么错误?
或者,当我托管在另一个控件中时,通常不可能成为DDE服务器吗?
感谢回复
事实证明,这是不可能的。在托管模式下,主机应用程序需要改为DDE服务器。
相关文章:
- 无法在C++中建立与MySQL数据库的连接
- OSX蓝牙打开RFCOMMChannelAsync声称已连接,但未建立连接,并且从未调用过委托
- 通过单独的 tcp 流建立 http 连接
- 将"libpqxx"与Visual Studio 2013链接/安装,以便与PostgrSQL建立C++连接
- Qt:如何通知对象已建立涉及它的信号槽连接
- 从 NAT 后面建立对等连接
- 提升 Websocket 并io_context可重用性,以实现连接的可重新建立性
- 仅通过建立一次TCP连接将Recv从客户端发送到服务器套接字
- 在Windows -C 中未建立的TCP连接
- 我无法在用C++编写的服务器和用 C# 编写的客户端之间建立 UDP 连接
- NAS(使用 qt/linux)- 无法建立简单的音频服务器连接测试
- 使用Isringstream和struct/vector在给定的数据之间建立连接
- C++ MySQL,使用在同一类内的另一个函数中的一个函数中建立的连接
- Adafruit Fona与echo服务器建立连接,但不发送任何数据
- 在哪里建立连接是否重要
- DDE服务器在托管模式下未建立连接
- 我无法与 boost::asio::connect 建立连接
- Bind返回正在使用的地址,即使没有建立连接
- 两台计算机之间的通信没有打开端口,使用第三台计算机建立连接
- 本地套接字建立连接后,等待指定报文