从Python调用时发生Bloomberg DDE错误



我正在尝试使用DDE向彭博终端发送命令。例如:显示我可以发送的微软页面:

<blp-1><CANCEL><CANCEL><HOME>MSFT<EQUITY><GO>

使用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>')

结果弹出一个彭博窗口,但命令区出现乱码文本,类似

????A?????

有人看起来像这样吗?

解决方案是更改这条线

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。

最新更新