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)
有人看起来像这样吗?
解决方案是改变这条线
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.