如何解决如何注册一个64位的python COM服务器
ahk 代码:
ComObjCreate("{C2474B5A-5E9D-484D-BDFD-20A100183426}")
这适用于 AutoHotkeyU32.exe,但不适用于 AutoHotkeyU64.exe
错误消息是:the specified module could not be found.
完整代码在这里:How to program hotstrings in python like in autohotkey
我使用 ahk 热键调用我的 SymPy 函数。我使用 pywin32 将 python 脚本注册为 COM 服务器并使用 ahk 加载它。
解决方法
您需要 pywin32,但不要使用 pip install pywin32
下载
从https://github.com/mhammond/pywin32/releases
下载
否则它不适用于 AutoHotkeyU64.exe,它仅适用于 AutoHotkeyU32.exe。
一定要下载amd64,(我下载的是pywin32-300.win-amd64-py3.8.exe)
编辑:现在我明白为什么它不起作用
如果您正确注册,我认为它可以在使用 pip install pywin32
时工作。
你有两个选择:
- 正确注册,如下所示How to program hotstrings in python like in autohotkey :
不要使用UseCommandLine()
,使用RegisterServer(clsctx=pythoncom.CLSCTX_LOCAL_SERVER,...)
- 使用
UseCommandLine()
注册服务器后,删除注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{C70F3BF7-2947-4F87-B31E-9F5B8B13D24F}\PythonCOMPath\InprocServer32
将{C70F3BF7-2947-4F87-B31E-9F5B8B13D24F}
替换为您自己的CLSID
(我认为)没有必要
键:InprocServer32
:Name
:(Default)
Type
:REG_EXPAND_SZ
Data
:pythoncom39.dll
,
另外,要求它会失败
(我认为)没有必要,因为它实际上使用了LocalServer32(这也是一个键)
我的是:Name
:(Default)
Type
:REG_SZ
Data
:C:\PROGRA~3\Miniconda3\pythonw.exe "C:\ProgramData\Miniconda3\lib\site-packages\win32com\server\localserver.py" {C70F3BF7-2947-4F87-B31E-9F5B8B13D24F}
localserver.py
是做 COM 东西的人,为了证明这一点,用 pythonw
替换 python
。运行时,您将看到窗口。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。