import win32com.client COM = win32com.client.Dispatch('Excel.Application')
(上記は例ですが)
・取得したCOMのIDを確認方法をご教授願えませんでしょうか?
OLEVIEWとか外部ツールを使うのではなくて、プログラムとして取得するやり方を知りたいのです
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
取得したいCOMのIDというのはCLSIDのことでしょうか?

回答1件
0
ベストアンサー
もっと簡単な方法があるかもしれませんが、
ProgID
から CLSID
の取得は CLSIDFromProgID
という Win32 API を用いることで取得可能です。
python
1from ctypes import * 2 3BYTE, WORD, DWORD = c_ubyte, c_ushort, c_ulong 4CLSIDFromProgID = oledll.ole32.CLSIDFromProgID 5 6class GUID(Structure): 7 _fields_ = [("Data1", DWORD), ("Data2", WORD), ("Data3", WORD), ("Data4", BYTE * 8)] 8 9progid = "Excel.Application" 10guid = GUID() 11progid = progid 12CLSIDFromProgID(progid, byref(guid)) 13 14print("ProgID : [" + progid + "]") 15print("CLSID : [{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}]" % 16 ( 17 guid.Data1, 18 guid.Data2, 19 guid.Data3, 20 guid.Data4[0], 21 guid.Data4[1], 22 guid.Data4[2], 23 guid.Data4[3], 24 guid.Data4[4], 25 guid.Data4[5], 26 guid.Data4[6], 27 guid.Data4[7] 28 ) 29)
■ 実行結果
ProgID : [Excel.Application] CLSID : [{00024500-0000-0000-c000-000000000046}]
<参考>
■ How to use IFileOperation from ctypes
https://stackoverflow.com/questions/62065891/how-to-use-ifileoperation-from-ctypes
投稿2022/02/27 18:46
総合スコア4700
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
ご教授ありがとうございます。こちらの意図がうまく伝わっていないようで申し訳ございません。
やりたいのが'Excel.Application'というワードを例としてとったのですが、今は
このワードが上位から知らされてなくてCOMオブジェクトだけインスタンスとして渡されている状態なのです。
で、別のプロセスからも使いたいのですがインスタンスからProgIDやCLSIDを取れないかというのを期待しています
COMオブジェジェクトから ProgID を取得する方法ですが、下記を試してみて下さい。
---------------------------
print(COM._username_)
---------------------------
<参考>
https://github.com/mhammond/pywin32/blob/main/com/win32com/client/dynamic.py#L465
ありがとうございます。うまくいきました(メソッド云々が呼べるかはまた引き続きがんばります)

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。