問題タブ [clsid]

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.

0 投票する
1 に答える
1153 参照

c++ - C++ MFC は CLSID (GUID) から IShellItem を作成します

Windows ヘルプと Windows Run への ShellItem を作成する必要があります...

私はこれを持っています

http://www.sevenforums.com/tutorials/110919-clsid-key-list-windows-7-a.htmlから

私はもう試した

OK を返しますが、pidl2 として Null を返します

助けてもらえますか?

0 投票する
1 に答える
816 参照

com - CLSID 自動生成の既定の規則は何ですか?

COM コンポーネント プロジェクトと、COM コンポーネントを登録する 1 つの Windows セットアップ プロジェクトがあります。セットアップ プロジェクトの以前のビルドを確認したところ、COM プロジェクト内のクラス用に生成された CLSID は常に変更されているようですが、それらのクラスに変更がない場合もあります。同じマシンで異なるバージョンの実装を維持したいので、これはどういうわけか望ましい方法です。ただし、このプロジェクトを手動でビルドし、同じ日に /regfile オプションを指定して regasm.exe を数回実行すると、生成された reg ファイルの CLSID は常に同じになります。以前のケースで変更されたのは、製造された時期が異なるためだと思われますが、よくわかりません。では、この CLSID 自動生成の (既定の) ルールを教えてください。プロジェクトのデフォルト設定を使用していると思います。

アセンブリのバージョンが結果に影響するかどうかはわかりません。ただし、アセンブリのバージョン番号は Major.Minor.* として割り当てます。つまり、3 番目の数字 (ビルド番号) は 1.1.2000 からの日数であり、4 番目の数字 (リビジョン番号) は午前 0 時からの秒数を 2 で割った値です。クラス コードが変わらなくても CLSID が変わる場合、メジャー番号とマイナー番号も同じです。したがって、バージョン番号が CLSID に影響する場合、メジャー番号とマイナー番号だけが考慮されているわけではないことがわかります。

もちろん、これらのクラスには静的 GUID を割り当てませんでした。そうしないと、セットアップ プロジェクトで変更されません。

助けてくれてありがとう!

0 投票する
1 に答える
326 参照

python - genguid.exeで生成されたclsidが機能しないのはなぜですか?

pywinデモからexceladdin.pyの例を変更しようとしています。

それ以外の場合は変更できますが、例で示したclsidを置き換えると次のようになります。

genguid.exeまたはpythoncom.CreateGuid()によって生成されたものを使用します。例:

com-addinが機能しなくなります。トレースなし、エラーなしExcelのcom-objectsリスト(翻訳)の次のテキスト「アドインがロードされていません。comオブジェクトのロード中に実行時にエラーが発生しました。」

clsidを生成する手順がありませんか?

編集:私は問題を見つけたと思います...clsidはdllのIDです。Pythonの場合、clsidはpythoncomloader27.dllを参照します。これは正しいですか?...それでも正しいPythonファイルを読み込めません。clsidは、何らかの形でpythoncomloaderと元のpythonfileにリンクされています。新しいclsidを生成する場合、それをpythonloaderにリンクする必要がありますか?どのように?

0 投票する
1 に答える
831 参照

.net - CLSID のみが異なる場合に、2 つの COM コンポーネントへの .NET プロジェクト参照を作成しますか?

簡単に:

.NET プロジェクトで、CLSID 以外は同一の 2 つの ummanaged COM コンポーネントへの 2 つの参照を作成するにはどうすればよいですか? それらは同じ ProgID と同じ Type Lib を持っています。

Type Lib は、2 番目の参照を作成しようとしたときに、Visual Studio が不平を言うものです。

「XXX タイプ ライブラリ」への参照を追加できませんでした。このタイプ ライブラリへの参照は既に存在します。これを追加する前に、参照「XXX」を削除する必要があります。

前もって感謝します。


詳細:

別のアプリケーションとの統合を提供する WPF アプリケーションを作成しています。もう 1 つのアプリケーションは、そのバージョンが個別のアプリケーションとしてインストールされるという点で少し変わっています。ユーザーは、複数のバージョンのアプリケーションをコンピューター上で並行して実行できます。

私の単一の WPF アプリケーションでは、ユーザーがこの別のアプリケーションのバージョンを選択できるようになっています。他のアプリケーションには、インストールされている各バージョンのアンマネージ COM DLL があり、これを使用して、自分の WPF アプリとこの他のアプリケーションとの統合を作成しています。

私の WPF アプリケーションは、バージョン 1 のアンマネージ COM コンポーネントへの参照を使用して、他のアプリケーションの最初のバージョンで正常に動作しています。2 番目のバージョンの COM コンポーネントを参照しようとすると、問題が発生します。

WPF プロジェクトで [参照の追加] を使用すると、次のエラーが表示 されます。「XXX タイプ ライブラリ」への参照を追加できませんでした。このタイプ ライブラリへの参照は既に存在します。これを追加する前に、参照「XXX」を削除する必要があります。

レジストリを調べると、COM コンポーネントの 2 つのバージョンのレジストリ情報の違いは、CLSD と実際の DLL へのパスだけであることがわかります。ProgID と TypeLib の値は、両方のコンポーネントで同じです。

他のアプリケーションのバージョンは実際には別個のアプリケーションとして扱われるため、COM コンポーネントを別のアプリケーションとしてインストールすることを希望し、次のリリースで会社と協力しています。

今のところ、バージョン 2 を自分の WPF アプリケーションに統合しようとしています。extern エイリアスとプロジェクト ファイルを手動で編集してエイリアスを導入する方法に関する多くの投稿を見てきまし たが、それらはすべてアンマネージド COM コンポーネントではなくマネージド アセンブリから始まるようです。プロジェクト ファイルの内容は、参照されるアンマネージ COM コンポーネントによって異なります。また、2 番目の参照を作成できないため、プロジェクト ファイル内の参照にエイリアスタグを追加しても役に立ちません。

System.Addin とリフレクションの使用について話している人を見てきましたが、より複雑なアプローチを調査する前に、より簡単なアプローチがないことを確認したかったのです。

ここまで読んでくれてありがとう!


CasperOneのアドバイスに従って、次のことを行いました。

  1. Visual Studio コマンド プロンプトを使用して次を実行しました: tlbimp "c:\xxx1.dll" /out:"c:\NETxxx1.dll"
  2. Visual Studio コマンド プロンプトを使用して次のコマンドを実行しました: tlbimp "c:\xxx2.dll" /out:"c:\NETxxx2.dll"
  3. テスト プロジェクトへの参照として、新しく作成された両方の DLL (Interop だと思います) を追加しました。「参照」タブを使用してそれらを見つけました。
  4. casperOne のコード サンプルにほぼ従うコードを追加しました。

COM インターフェイスに使用する名前について、少しパニックになりました。私が使用している COM オブジェクトの場合、1 つのメイン インターフェイス オブジェクトがあり、その COM オブジェクトから使用する他のすべてのオブジェクトは、そのメイン インターフェイス オブジェクト内からインスタンス化されます (つまり、Foo x = y. GetNewFoo();)。

0 投票する
3 に答える
459 参照

c# - C#: System.Runtime.IntropServices.COMException: CLSID を持つコンポーネントの COM クラス ファクトリを取得しています

私は MS Word テンプレート ジェネレーターに取り組んでいます。次のように動作します。

ユーザーがWebページを開いていくつかのテキストボックスに入力し、いくつかのチェックボックスをマークしてからボタンをクリックすると、Word文書が開き(以前に定義した必要なすべてのブックマークを備えたテンプレート)、Webページに入力したものを使用して、すべて文書に含まれていますフィールドとチェック ボックスはマークしたとおりにマークされているため、ドキュメントを印刷するだけで済みます。それは私のPCで完全に機能しました

しかし、サーバーでテストしたところ、エラーが発生しました。 ここに画像の説明を入力

私のコード: 参照を含めました ( using Word = Microsoft.Office.Interop.Word;)

私が取り組んでいたことを知っている: Visual Studios C# 2010、および Microsoft .NET Framework 4.0 サーバー上: Visual Studio C# 2005、MS Framework 2.0

何が問題なのですか?

0 投票する
1 に答える
1319 参照

vb.net - VB.net クラスが登録されていませんエラー

VB アプリケーションを作成中ですが、アプリケーションを実行するたびに、以下のエラーが表示されます。

「フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。エラーは次のとおりです: CLSID {11219420-1768-11D1-95BE-00609797EA4F} のコンポーネントの COM クラス ファクトリの取得に失敗しました: 次のエラーが原因でした: 80040154 クラスが登録されていません(HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG))」。

shell32.dll ファイルの登録を試みました。レジストリでエントリ {11219420-1768-11D1-95BE-00609797EA4F} を調べましたが、存在しませんでした。このアプリケーションを x86 用にコンパイルしようとしました。

その他の情報: Windows 7 64 ビット マシンを使用しています。私は .Net 4.0 以前のバージョンを使用しており、Visual Studio 2012 で作業しています。また、プロジェクトに参照として shell32.dll を追加しています。この問題を解決するための助けをいただければ幸いです。

ありがとう。

0 投票する
2 に答える
2177 参照

c++ - Windows では、UuidFromString と CLSIDFromString に違いはありますか?

COM クラスとは関係のない、内部生成された GUID に使用するのにどちらが正しいかを再確認したいと思います。

私の疑いでは、それは UuidFromString ですが、CLSIDFromString を使用するコードが引き続き見られます。CLSIDFromString がレジストリにリストされている COM クラスを列挙する可能性があるという漠然とした記憶がありますが、これが正しいかどうかはわかりません。

0 投票する
2 に答える
1619 参照

c++ - GUID値のテンプレートを特殊化する

これは、定数PODオブジェクト定数自体のフィールドがないのはなぜですか?のフォローアップです。

ライブラリのヘッダーは、次のようなクラスGUIDを宣言します

dllを登録せずに、dllから直接オブジェクトを作成する関数を作成したいので、各CLSIDをdll名にマップする必要があります。何かのようなもの

これは、次のような専門分野に依存します

そのため、不明なdllを使用して未登録のクラスをインスタンス化しようとすると、コンパイル時エラーになります。

問題は、テンプレートをGUIDに特化できないことです。リンクされた質問によると、constexprは特殊化を可能にする方法でGUIDを宣言できますが、Visual C ++は最新バージョン(2012)ではconstexprをサポートしていません。回避策はありますか?

0 投票する
2 に答える
2387 参照

windows - Windows レジストリの既知の CLSID のリストはありますか?

Windows レジストリには、 などの多くの CLSID 値 ( 内HKEY_CLASSES_ROOT\CLSID)が存在します。その{16d51579-a30b-4c8b-a276-0ff4dc41e755}多くは、広く知られている、または組み込みのアプリケーションやライブラリに属している可能性があります。これらのマッピングを含むリストまたはデータベースはありますか?

いくつかの使用法は、レジストリ ビューアーでより意味のある名前をキーと共に表示したり、特定のアプリケーションが存在する (または存在していたが、もう存在しない) がレジストリにいくつかのキーが残っているかどうかを確認することです。