問題タブ [comclass]
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.
delphi - ComClass を見つけました。それを参照するにはどうすればよいですか?
小売アプリケーションへのプラグインとして機能する小さな COM サーバーを Delphi 2010 で作成しました。小売アプリケーションは、それぞれを呼び出す任意の数の追加インターフェイスを登録する「検出」インターフェイスを探しますTAutoObjectFactory.Create
。これは問題なく機能しています。すべてのプラグイン インターフェイスは設計どおりに機能します。
しかし、コードを複製する必要がないように、あるインターフェイスのパブリック メソッドを別のインターフェイスから呼び出したいと考えています。ComClassManager.ForEachFactory
使用する必要があるインターフェイスの ClassID を探して呼び出すだけです。それもうまくいきました!
しかし、クラスを見つけたので、一見些細な最終ステップに困惑しています。実際にそのメソッドの 1 つを呼び出すために見つけたクラス (またはクラス参照?) を使用またはキャストする方法です。
に送信した「FactoryProc」ではForEachFactory
、の ComClass プロパティが求めてTComObjectFactory
いるものであると想定していますが、それは TClass 型であり、それが指す実際のクラス オブジェクトへのクラス参照です (少なくとも、これを正しく理解してください)。私はクラス参照について少し曖昧で、このプロパティをキャストまたは逆参照しようとすると、アクセス違反またはコンパイラ エラーが発生しました。
助言がありますか?
.net - WindowsAzure上のAspPDFおよびAspJPEG
最近、.NETアプリケーションをWindowsAzureクラウドサービスに移行するプロセスを開始しました。私たちのアプリケーションは、AspPDF(PDFの作成と操作用)やAspJPEG(画像のサイズ変更用)など、多くのCOMクラスコンポーネントに大きく依存していました。典型的な非クラウドIISセットアップでは、DLLを(zippy32を使用して)本番サーバーに登録するだけで、すべて問題ありません。
Azureではプロセスが少し異なります。同様の課題を抱えている人を支援するために、私自身の質問に答えます。このメソッドは、展開プロセスの一部としてサーバーに登録する必要があるすべてのdllに使用できます。
c# - Outlook の自動化が突然失敗する原因と、それを元に戻す方法は?
電子メールを生成し、送信しようとしているものをユーザーに表示する OUtlook ダイアログをポップアップ表示するアプリがあります。正常に動作していましたが、コードを変更していないため、機能しなくなりました。生成される例外は次のとおりです。
例外メッセージ: CLSID {0006F03A-0000-0000-C000-000000000046} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 80080005 サーバーの実行に失敗しました (HRESULT からの例外: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))。例外ソース: mscorlib
...そして、この行にスローされます:
それ以外の場合、Outlook 自体は正常に動作しています。実際、Outlookを使用してこれらのメールを送信するようにアプリを設定しましたが、例外が発生するたびにgmailアカウントを介して自分にメールを送信しています-これがこの例外情報を取得した方法です-画面には何も表示されませんまたは問題を示しました - Outlook メール メッセージが表示されませんでした。
これが続く場合は、Outlook のメール送信コードも gmail に変更しますが、これについては Outlook を使い続けることをお勧めします。
vb.net - VB6 ActiveX からの VB.NET COM クラス ライブラリの呼び出しが機能しない
まず、さまざまな C++/VB6 ActiveX exe を起動する (非 ActiveX) C++ DLL を呼び出して (CLSIDFromProgID を呼び出してクラスをポイントし、CoCreateInstance を介して起動することによって) 「ジョブ」を作成するレガシー VB6 アプリケーションを扱っています。 (ジョブはさまざまなタイプのデータダウンローダーです)。私は新しいダウンローダを作成する必要があり、ActiveX は (非常に) レガシーであるため、VB.NET で COM クラス ライブラリとして作成しました (VB6 はストリーム ベースの HTTP をまったくうまく処理できないため)。他のダウンローダと同じエントリ ポイント。
私が最初に発見したことは、明らかに COM ライブラリを直接呼び出すことができないということです (ランチャーが CoCreateInstance を呼び出すと、呼び出しの後に次のステートメントで再開する前にデストラクタがトリガーされます)。 COM をインスタンス化し (Set oMyObject = CreateObject("DownloaderLib.Loader"))、「DoEvents」ループを実行します。ジョブハンドラーからそれを呼び出しても問題はなく、私の開発環境ではすべてが連携してうまく実行されます。
しかし、すべての部品をシステム テスト環境に移動すると、機能しなくなります。VB6 アプリケーションはプロキシを呼び出しますが、プロキシは COM をロード (または少なくとも実行) していないようです。イベント サーバーに何かを「表示」するコードがあるため、プロキシを起動していることはわかっています。COMに同様のコードがあり、COM内のさまざまなポイントでメッセージをディスパッチする必要があるため、COMに到達していないことはわかっています。
ActiveX exe プロキシを登録し、(「適切な」REGASM を使用して) COM ライブラリを登録しました。私の開発環境は、VS2017 と .NET Framework v4.7.03190 を使用した Win10 です。COM は、.NET Framework 4.6.1 を対象とするクラス ライブラリとして構築されます。私のシステム テスト環境は Windows Server 16 で、インストールされている .NET Framework は 4.7.2 (リリース コード 461814) で、使用した REGASM は "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\" フォルダーにあります。
他に何をする必要がありますか?何が欠けている可能性がありますか?
どんな助けでも大歓迎です。