我正在尝试使用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。