Ste*_*Lee 5 python com guid com-server
我是制作COM服务器和使用Python的COM的新手,所以我想澄清一些我找不到明确答案的东西:
正确为COM服务器创建GUID
我生成:
手动创建我的COM服务器的GUID,从那时起复制它并将#用于服务器?因此,当我分发应用程序时,其他用户将使用我在开发期间创建的相同GUID.
每次初始化应用程序或COM服务器对象时都有新的GUID?
基于每台计算机的新GUID,在初始设置期间只有一次然后让应用程序保存GUID#,并且在将来加载时它会从用户设置文件中提取#?
示例场景1:
i) print(pythoncom.CreateGuid()) #in interpreter
ii) _reg_clsid_ = copy above GUID into your app
Run Code Online (Sandbox Code Playgroud)
示例场景2:
i)_reg_clsid_ = pythoncom.CreateGuid()
Run Code Online (Sandbox Code Playgroud)
示例场景3:
if self.isfile = os.path.isfile(url):
load_previous_generated_GUID(url)
else:
#first time running application or setup file is missing
GUID = pythoncom.CreateGuid()
save_GUID_to_setup_file(GUID)
Run Code Online (Sandbox Code Playgroud)
我可以使用GUID来跟踪程序/ COM服务器版本吗?
如果上面的场景#1是正确的那么:当我进行升级时,我可以测试旧的GUID,以便我可以正确地与它进行交互?
TODO:如何从Python和/或VBA获取COM服务器的GUID?
您肯定需要场景 1。您应该在开发期间生成一次CLSID ,并使用它,直到您更改类导出(到 COM)的函数集。
您不仅可以使用 CLSID 来跟踪版本,而且每当发布新版本时都必须更改 CLSID,否则就违反了COM 身份规则;在进程外调用对象时,违反规则通常会导致模糊的故障模式。
但是,通常情况下,您不会直接向代码公开 CLSID,而是公开PROGID,它们是具有嵌入式版本控制信息的人类可读字符串,并使用 Win32 API CLSIDFromProgID在两者之间进行转换。(VBA 会为您执行此操作;Python 也可以执行此操作。)
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |