簡體   English   中英

如何注冊 64 位 python COM 服務器

[英]how to register a 64bit python COM server

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時工作。
你有2個選擇:

  1. 正確注冊它,如下所示如何在 python 中編程熱字串,如在 autohotkey 中
    不要使用UseCommandLine() ,使用RegisterServer(clsctx=pythoncom.CLSCTX_LOCAL_SERVER, ...)
  2. 使用UseCommandLine()注冊服務器后,刪除注冊表項HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{C70F3BF7-2947-4F87-B31E-9F5B8B13D24F}\PythonCOMPath\InprocServer32

    用您自己的CLSID替換{C70F3BF7-2947-4F87-B31E-9F5B8B13D24F}

(我認為)沒有必要
鍵: InprocServer32
Name :( (Default)
TypeREG_EXPAND_SZ
Datapythoncom39.dll
另外,要求它會失敗

(我認為)沒有必要,因為它實際上使用 LocalServer32 (這也是一個關鍵)
我的是:
Name :( (Default)
TypeREG_SZ
DataC:\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 當它運行時,你會得到 window。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM