从Python调用Bloomberg DDE错误

ash*_*byp 2 python dde bloomberg

我正在尝试使用DDE向Bloomberg Terminal发送命令.例如:显示我可以发送的Microsoft页面:

<blp-1><CANCEL><CANCEL><HOME>MSFT<EQUITY><GO>
Run Code Online (Sandbox Code Playgroud)

使用EXCEL的VBA库可以正常工作.但是我试图从Python脚本中做同样的事情.我在这里使用代码(由于一些限制,我不能使用更标准的win32ui/dde ​​python模块)

http://code.activestate.com/recipes/577654-dde-client/

消息正在传递给彭博终端但未被正确解释,例如:

de = DDEClient('WinBlp', 'bbk')
de.execute('<blp-1><CANCEL><CANCEL><HOME>MSFT<EQUITY><GO>')
Run Code Online (Sandbox Code Playgroud)

导致Bloomberg窗口弹出,但命令区域中的文本乱码,类似于

????A?????
Run Code Online (Sandbox Code Playgroud)

有人看起来像这样吗?

ash*_*byp 6

解决方案是改变这条线

Initialize = get_winfunc("user32","DdeInitializeW",UINT,(LPDWORD,DDECALLBACK,DWORD,DWORD))

Initialize = get_winfunc("user32","DdeInitializeA",UINT,(LPDWORD,DDECALLBACK,DWORD,DWORD))

从这里的MS文档:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms648757(v=vs.85).aspx

DdeInitializeA是初始化程序的ANSI版本,而不是unicode.