Bloomberg DDE Ошибка при вызове из Python - PullRequest
2 голосов
/ 07 марта 2012

Я пытаюсь отправить команды в терминал Bloomberg с помощью DDE.Например: для отображения страницы Microsoft я могу отправить:

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

Это прекрасно работает с использованием библиотеки VBA из EXCEL.Однако я пытаюсь сделать то же самое из скрипта Python.Я использую код отсюда (из-за некоторых ограничений я не могу использовать более стандартные модули python win32ui / dde)

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

Сообщения передаются в терминал Bloomberg, но непри правильной интерпретации, например:

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

, появляется окно Bloomberg, но с искаженным текстом в области команд, что-то вроде

????A?????

Кто-нибудь может показаться что-то подобное?

1 Ответ

6 голосов
/ 08 марта 2012

Решением было изменить эту строку

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.

...