問題タブ [pythoncom]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - ImportError: pywintypes という名前のモジュールがありません
pyHook、pythoncom、および Pywin32 モジュールを使用して、Python で小さなキーロガーを作成しようとしています。これが私のコードです:
実行すると、次のエラー メッセージが返されます。
このエラーを修正するにはどうすればよいですか?
python - Python COM サーバー: シングルトンへのアクセス
COM 経由で異なる Python プロセスから 1 つのオブジェクトのデータにアクセスする必要があります。
ここのstackoverflowに関する同様の質問では、クライアントに複数のCOMオブジェクトを作成させ、それらが単一のオブジェクト実装と通信できるようにすることが提案されました...しかし、私はそれを行う方法が本当にわかりません.
誰でも助けることができますか?
ありがとう!マルテ
python - VisualStudio.VCProjectEngine.10.0 以降のインスタンス化が不可解に失敗し、8.0 では失敗しない
注:質問はもともと Python と に関するものでしたがwin32com
、問題はクライアント側ではなく、COM サーバー内に存在することが判明しました。したがって、質問と回答の情報は、COM クライアントとして使用できるすべての言語に適用されます。
多分誰かが助けることができます。私が直面しているのは、次の状況です。VisualStudio.VCProjectEngine.8.0
私のコードで問題なくインスタンス化できます。関連するコード:
...このエラーが発生します:
ご覧のとおり、一方は正常に動作し、もう一方は不可解に失敗します。何を与える?
makepy.py -i
与えるものは次のとおりです。
makepy.py -i
注: で指定された CLSID が に一致するVisualStudio.VCProjectEngine.8.0
が、VisualStudio.VCProjectEngine.10.0
(レジストリに が表示されている場合{4547a58d-fc1c-4502-84fa-0163ee766635}
)には一致しないことに気付きました。
ただし、タプルを調整してもVisualStudio.VCProjectEngine.10.0
、('{4547a58d-fc1c-4502-84fa-0163ee766635}', 0, 10, 0)
例外には役立ちません。
このエラーは、Visual Studio 2010 以降で発生しているようです。によって与えられた値で ProgID としてVisualStudio.VCProjectEngine.11.0
も試しましたが、エラーは同様でした:VisualStudio.VCProjectEngine.12.0
makepy.py -i
python - python win32com、オブジェクトは自動的に再利用されますか?
Python コードは、単純なドキュメントの段落 (7 行の "Line 1"、"Line 2" など) を反復処理します。各段落オブジェクトは一意であると期待していますが、実際には重複してい0x25173368
ます。何が起こるのですか?それは私の直感に完全に反しています。
コード:
出力:
python - pythoncom を使用した Python プロセス間での COM オブジェクトのマーシャリング
Python から Excel へのマーシャリングされたクロスプロセス呼び出しを行うことができるように、誰かが私を助けてくれることを願っています。
別の Python プロセスからアクセスする必要があるときに、Python を介して開始された Excel セッションが起動して実行されることがわかっています。マーシャリングとpythoncomモジュールからの呼び出しを使用して、すべてがCoMarshalInterfaceInStream()
必要CoGetInterfaceAndReleaseStream()
に応じて機能していますが、ストリームへの繰り返しアクセスが必要であり(私の場合は1回しか設定できません)、CoGetInterfaceAndReleaseStream()
インターフェースへの1回だけのアクセスを許可します。
私が達成したいことは で実行できると信じていますがCreateStreamOnHGlobal()
、正しいパラメーターを渡していないため、ほぼ確実に機能させることができません。CoMarshalInterface()
CoUnmarshalInterface()
私の主なシナリオを詳細に説明するのではなく、簡単なサンプル プログラムを次のように設定しました。明らかに、これは同じプロセスで行われますが、一度に 1 ステップずつ行われます。次のスニペットは正常に機能します。
ただし、次のことを試すと:
への呼び出しを行うときに、このエラーが発生します(これは3番目のパラメーターに関連していると思います)pythoncom.CoMarshalInterface()
:
この簡単な例を機能させる方法を知っている人はいますか?
前もって感謝します
excel - Documents.Open メソッドを使用してパスワードを渡します。これは正しいです?
.py スクリプトに次のコード行があり、パスワードで保護されたドキュメントにアクセスしています。ただし、このスクリプトを実行すると、winword.exe が表示されると、Word はユーザーに再度パスワードを要求します。これは正常な動作ですか?.py ファイルにパスワードを含めるかどうかにかかわらず、パスワードを要求するので、疑わしいです。どんな入力でも大歓迎です。コードは次のとおりです。
余談ですが、目標は、このスクリプト (Word を開く) を介してのみ .docx にアクセスできるようにすることです。これを実装するために他の誰かが念頭に置いている代替方法も高く評価されます。
python - Python で Windows COM DLL を正しくロードする方法
公開されているすべてのインターフェイスを取得するために、Python で Windows COM DLL を読み込もうとしています。
依存関係ウォーカーツールを使用して、dll 内の関数を一覧表示できます。4つの関数しか表示されません:
- DllCanUnloadNow
- DllGetClassObject
- DllRegisterServer
- DllUnregisterServer
私の理解が正しければ、DllGetClassObject() を使用してクラスのオブジェクトを取得し、公開されたインターフェイスを使用する必要があります。
オブジェクトを抽出するために pythoncom と win32com.client を使用しています (別のスタックオーバーフローの投稿からレシピを取得しました)
cls_id
PTSControl ツールの Windows レジストリから取得しました。しかし、これは WindowsError をスローします。
私が間違っていることはありますか?ツールのソース コードにアクセスできません。
C++ ではこれは 2 段階のプロセスですが、Python ではどうすればよいかわかりません:
- CoInitializeEx()
- CoCreateInstance()
一般に、Python で Windows COM DLL にアクセスするための最良の手法は何ですか? ありがとう !!