2017-01-09 62 views
0

我想写一个Python应用程序挂钩到Windows上的注册DLL(IAccessible2Proxy.dll)。问题是,这个DLL没有提供类型库,所以我重新编译了DLL以生成我自己的。我将这个本地存储在项目中并使用Python进行连接。DLL是否与旧的类型库向后兼容?

由于采用IAccessible2Proxy.dll的方式,所以任何更新都不可能删除现有的方法。但是,在我可以更新类型库之前,它可能会被其他程序更新。

如果该DLL由另一个程序更新,我生成的TypeLib是否仍然可以使用较新的DLL,或者将Type Libraries绑定到特定的DLL版本?我是否需要使用专门为该版本的DLL生成的类型库?

回答

0

周围挖掘后,看起来像我找到了答案。

根据NVDA项目中的this commit,较旧的类型库应该与系统上存在的较新类型库的较新的DLL 兼容。

# Windows updates often include newer versions of dlls/typelibs we use. 
# The typelib being newer than the comtypes generated module doesn't hurt us, 
# so kill the "Typelib newer than module" ImportError. 

看起来像蟒蛇comtypes模块抱怨尽管如此,但这是可以固定与猴子补丁。

我认为这包括删除方法的DLL更新,前提是这些方法在删除后不能被访问,但这是一个猜测。还没有测试过。