Ошибка 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?????


Кто-нибудь видел нечто подобное?

393   1  

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

    Ничего не найдено.