Комментарии 6
На всякий случай, на известной страничке www.lfd.uci.edu/~gohlke/pythonlibs уже собранный pywin32 имеется для всех (не сильно устаревших) вариантов питона.
Если нет IDispatch интерфейса, то самый универсальный вариант — pip install comtypes. И не нужно никакой компиляции. Единственный минус — на Py3.5 и Py3.6 не всегда работает, но фикс уже смерджили в мастер.
Не знал про comtypes, спасибо. Я попробую.
В описании к нему написано, что используется раннее связывание — берется описание интерфейса из IDL или type library и по нему генерится код на питоне. Для IPreviewHandler описания в type library нет, а IDL есть в WinSDK.
Попробовал описать интерфейс в питоне — увы, не получилось.
Выдает ошибку:
В описании к нему написано, что используется раннее связывание — берется описание интерфейса из IDL или type library и по нему генерится код на питоне. Для IPreviewHandler описания в type library нет, а IDL есть в WinSDK.
Попробовал описать интерфейс в питоне — увы, не получилось.
precomtypes.py
from comtypes import (IUnknown, STDMETHOD, HRESULT, GUID, CLSCTX_LOCAL_SERVER)
import comtypes.server as cs
import comtypes.client as cc
from ctypes import (POINTER, c_void_p)
from ctypes.wintypes import tagRECT, HWND, MSG
class IPreviewHandler(IUnknown):
_case_insensitive_ = False
_iid_ = GUID('{8895B1C6-B41F-4C1C-A562-0D564250836F}')
_idlflags_ = []
_methods_ = [
## virtual HRESULT STDMETHODCALLTYPE SetWindow(
## /* [in] */ HWND hwnd,
## /* [in] */ CRECTPTR prc) = 0;
STDMETHOD(HRESULT, "SetWindow",
[HWND, POINTER(tagRECT)]),
## virtual HRESULT STDMETHODCALLTYPE SetRect(
## /* [in] */ CRECTPTR prc) = 0;
STDMETHOD(HRESULT, "SetRect",
[POINTER(tagRECT)]),
## virtual HRESULT STDMETHODCALLTYPE DoPreview( void) = 0;
STDMETHOD(HRESULT, "DoPreview", []),
## virtual HRESULT STDMETHODCALLTYPE Unload( void) = 0;
STDMETHOD(HRESULT, "Unload", []),
## virtual HRESULT STDMETHODCALLTYPE SetFocus( void) = 0;
STDMETHOD(HRESULT, "SetFocus", []),
## virtual HRESULT STDMETHODCALLTYPE QueryFocus(
## /* [out] */ HWNDPTR phwnd) = 0;
STDMETHOD(HRESULT, "QueryFocus",
[POINTER(HWND)]),
## virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
## /* [in] */ MSGPTR pmsg) = 0;
STDMETHOD(HRESULT, "TranslateAccelerator",
[POINTER(MSG)])
]
obj = cc.CreateObject('{DC6EFB56-9CFA-464D-8880-44885D7DC193}',
clsctx = CLSCTX_LOCAL_SERVER,
interface=IPreviewHandler
)
Выдает ошибку:
Traceback (most recent call last):
File "C:/Projects/pytest/precomtypes.py", line 48, in <module>
clsctx = CLSCTX_LOCAL_SERVER #,
File "C:\Program Files (x86)\Python36-32\lib\site-packages\comtypes\client\__init__.py", line 238, in CreateObject
obj = comtypes.CoCreateInstance(clsid, clsctx=clsctx, interface=interface)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\comtypes\__init__.py", line 1223, in CoCreateInstance
_ole32.CoCreateInstance(byref(clsid), punkouter, clsctx, byref(iid), byref(p))
File "_ctypes/callproc.c", line 918, in GetResult
OSError: [WinError -2147467259] Неопознанная ошибка
не глючит просмотр pdf? у меня какие-то косяки начинались после десятка-другого просмотров из-за чего я его просто отключил…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Preview документов в программе на Python