<Windows, Python, win32com> COMサーバの登録
win32com
を使って、Windowsのアプリケーションを操作する場合、
そもそも、対象となるアプリケーションが、レジストリregistry
に登録されてないと呼び出せない、、ことを知る。
win32com
から呼び出し可能か? は、makepy.py
で調べれる。
ここにリストされてると、呼び出し可能っぽい。
>cd /c/Anaconda3/Lib/site-packages/win32com/client >python makepy.py
18/09/14 修正。
上記ではうまくなかった。
レジストリに登録されていないと呼び出せないので、レジストリを検索してあるか? 調べるが正解っぽい。
regedit
でレジストリを起動して、HKEY_CLASSES_ROOT
にぶら下がっているアプリケーションが呼び出せるもの。
で、本題。
登録されてない場合、どうやって登録するのか?
Windowsアプリケーションの.dll
(ダイナミックリンクライブラリ形式)とか、.exe
(実行形式)は、
どうも、
ActiveXサーバとか、COMサーバとか呼ばれてるっぽい。
登録は、下記コマンドをコマンドプロンプトでたたく。
#.dllをレジストリに登録 c:\>regsvr32 c:\hage.dll #.dllをレジストリから削除 c:\>regsvr32 /u c:\hage.dll #.exeをレジストリに登録 c:\hage.exe /regserver #.exeをレジストリから削除 c:\hage.exe /unregserver
http://www5.plala.or.jp/softworld/topic_selfregistdll.htm
あと、Win7
だと、管理者権限で登録かけないといけんらしい。
その場合、適当にcom.bat
とかいうファイルを作成して、中を、
c:\hage.exe /regserver
としておいて、管理者権限でcom.bat
を回せばいい。
COM Interface を Windows vista/Windows 7 で実行するには?
長い道のりじゃ。。。