Ошибка Bloomberg DDE при вызове из Python
Я пытаюсь отправить команды на терминал Bloomberg с помощью DDE.
Например: для отображения страницы Microsoft я могу отправить:
<blp-1><CANCEL><CANCEL><HOME>MSFT<EQUITY><GO>
Это прекрасно работает с использованием библиотеки VBA из EXCEL. Однако я пытаюсь сделать то же самое из сценария Python. Я использую код отсюда (из-за некоторых ограничений я не могу использовать более стандартные модули win32ui/dde python)
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 ответ:
Решение состояло в том, чтобы изменить эту строку
Инициализировать = get_winfunc("библиотека user32", "DdeInitializeW", uint, не (LPDWORD, DDECALLBACK, типа DWORD, DWORD с))
К
Инициализировать = get_winfunc("библиотека user32", "DdeInitializeA", uint, не (LPDWORD, DDECALLBACK, типа DWORD, DWORD с))
Из документации MS здесь:
Http://msdn.microsoft.com/en-us/library/windows/desktop/ms648757 (v=против 85).aspx
DdeInitializeA-это версия ANSI инициализатор, а не Юникод.
Comments