JavaScriptのCOMオブジェクトとは何ですか
COM オブジェクトは、COM 仕様を使用する再利用可能なソフトウェア コンポーネントである「コンポーネント オブジェクト モデル オブジェクト」を指します。COM 仕様を使用すると、COM オブジェクトが適切に動作し、アプリケーションに簡単に統合できます。 COM オブジェクトは通常、ダイナミック リンク ライブラリ (DLL) を使用して実装されます。通常の DLL と同様に、COM オブジェクトは、サポートされている操作を完了するためにユーザーのアプリケーションが呼び出すことができるいくつかのメソッドを公開します。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
COM オブジェクトとは何ですか?
コンポーネント オブジェクト モデル (COM) オブジェクトは、COM 仕様を使用する再利用可能なソフトウェア コンポーネントです。 COM 仕様を使用すると、COM オブジェクトが適切に動作し、アプリケーションに簡単に統合できるようになります。実際、COM は基本的にブラック ボックスに相当し、アプリケーションに対して多くの作業を実行できます。
COM オブジェクトは通常、ダイナミック リンク ライブラリ (DLL) を使用して実装されます。通常の DLL と同様に、COM オブジェクトは、サポートされている操作を完了するためにアプリケーションが呼び出すことができるメソッドを公開します。アプリケーションと COM オブジェクト間の対話は、アプリケーションと C オブジェクト間の対話に似ていますが、両者の間にはいくつかの大きな違いがあります。
COM オブジェクトは正確なカプセル化を実装します。単純にオブジェクトを作成して、そのパブリック メソッドを任意に呼び出すことはできません。 COM オブジェクトのパブリック メソッドは、1 つ以上のインターフェイス グループに配置されます。メソッドを使用するには、COM オブジェクトを作成し、COM オブジェクトから COM オブジェクトの適切なインターフェイスを取得する必要があります。例: IDirect3DCubeTexture8 インターフェイスには、キューブ フレーム リソースを処理できるメソッドが含まれています。このインターフェースに属さないメソッドにはアクセスできません。
COM オブジェクトの作成は、C オブジェクトの作成とは異なります。 COM オブジェクトを作成するにはいくつかの方法がありますが、いずれも COM 固有のテクノロジを必要とします。 Microsoft の DirectX アプリケーション プログラミング インターフェイス (API) には、ほとんどの DirectX オブジェクトを作成するためのさまざまなヘルパー関数とメソッドが含まれています。
COM オブジェクトの有効期間を制御するには、COM 固有の手法を使用する必要があります。
COM オブジェクトを明示的にロードする必要はありません。 COM オブジェクトは DLL に含まれています。ただし、この COM オブジェクトを使用する場合、DLL を明示的にロードしたり、静的ライブラリを明示的にロードしたりする必要はありません。各 COM オブジェクトには、オブジェクトの作成に使用される一意の登録 ID があります。COM は正しい DLL を自動的にロードします。
COM はバイナリ仕様です。 COM オブジェクトは、さまざまな言語で書き込んだり、さまざまな言語からアクセスしたりできます。 COM オブジェクトのソース コードについて何も知る必要はありません。例: Microsoft Visual Bisice アプリケーションは、日常的に COM オブジェクトを使用して C を作成します。オブジェクトとインターフェイスの違いを理解することが重要です。場合によっては、オブジェクトの名前がプライマリ インターフェイスの名前として参照されることがあります。ただし、厳密に言えば、これら 2 つの条件は互換性がありません。
▲COM オブジェクトは、任意の数のインターフェイスを公開できます。たとえば、すべての COM オブジェクトは IUnknown インターフェイスを公開する必要があり、通常、少なくとも 1 つの追加インターフェイス、場合によってはそれ以上の追加インターフェイスを公開します。これらの特別なメソッドを使用するには、COM オブジェクトを作成するだけでなく、正しいインターフェイス ポインターを取得する必要があります。 ▲多くのオブジェクトが同じインターフェイスを公開する場合があります。インターフェイスは、指定された操作を実行するメソッドのセットです。インターフェイスの定義では、メソッドの構文とその機能を指定します。特殊な操作をサポートする COM オブジェクトは、適切なインターフェイスを公開します。一部のインターフェイスは高度に特殊化されており、単一のオブジェクトによってのみ公開されます。他のほとんどの場合、複数のオブジェクトによって公開されます。非常に特殊なケースは、IUnknown インターフェイスがすべての COM オブジェクトによって公開される必要があることです。
- COM 標準では、インターフェイスが一度リリースされると、その定義を変更できないことが要求されます。既存のインターフェースに新しいメソッドを追加することはできません。新しいインターフェースを再作成する必要があります。一般的には、新しいメソッドを追加する前に、古いインターフェイスのすべてのメソッドを次世代インターフェイスに含めます。
インターフェイスには複数の世代があることがよくあります。多くの場合、それらの本質は同じですが、細部が異なります。通常、オブジェクトはインターフェイスの各世代を公開できます。これにより、古いプログラムはオブジェクトの古いインターフェイスを引き続き使用し、新しいプログラムは新しいインターフェイスの機能を利用できるようになります。通常、インターフェイス ファミリには同じ名前があり、その後に世代を示す整数が続きます。例: 元のインターフェイスの名前が IMyInterface の場合、次の 2 世代のインターフェイスの名前は IMyInterface2 および IMyInterface3 になります。整数には通常、directx のバージョン番号が使用されます。
GUIDS
Globally Unique Identifier (GUIDS) は、COM プログラム モデルの重要な部分です。最も基本的な原理では、GUIDS は 128 ビット構造です。ただし、GUIDS は、同一の GUIDS が 2 つ存在しないように作成されます。 COM は、次の 2 つの主な目的で GUIDS を広く使用します。
1. 特定の COM オブジェクトを一意に識別する。
2. 特定の COM インターフェイスを一意に識別するため。戻り値 (HRESULT)
すべての COM メソッドは、HRESULT という名前の 32 ビット値を返します。ほとんどのメソッドでは、HRESULT は実際には 2 つの情報を含む構造体です。
1. このメソッドが成功するか失敗するか。
2. メソッドでサポートされている操作に関する詳細情報を出力します。一部のメソッドによって返される HRESULT 値は Winerror.h で定義されています。メソッドによって返される HRESULT 値は、ユーザー固有の情報である場合もあります。これらの値は通常、メソッドのリファレンス ページで確認されます。
COM オブジェクトのメソッド呼び出しは、呼び出しの成功または失敗を示すさまざまなコードを返す可能性があるということは、戻り値のテストには細心の注意を払う必要があることを意味します。例: メソッド呼び出しの戻り値が
S_OK の場合、メソッド呼び出しが成功したことを示します。戻り値が S_FAIL の場合、呼び出しが失敗したことを示します。もちろん、メソッド呼び出しは他の値を返す場合もあります。通話の成功または失敗を示すコード。次のコード スニペットは、コードに対してこのような単純なテストを実行するのは安全ではないことを示しています。コード内の hr の値は、メソッド呼び出しの戻り値です。if( hr == E_FAIL ) { //Handle the failure } else { //Handle the success }
このコードが E_FAIL のみを返す場合、このコード スニペットは正常に機能します。ただし、そうではありません。このメソッド呼び出しは、E_NOTIMPL、E_INVALIDARG などの他の値も返す場合があります。コードがこれらの値を返した場合、このコード セグメントはそれらの値を処理せず、デフォルトではプログラムが実行中であることを示します。通常通りですが、実際のプログラムは正しくありません。
メソッド呼び出しに関する詳細情報を知りたい場合は、関連する各戻り値をテストする必要があります。ただし、メソッド呼び出しが成功したかどうかだけを知りたい場合もあります。メソッド呼び出しが成功したかどうかをテストする良い方法は、winerror.h ファイルで定義されている次の 2 つのマクロにメソッドの戻り値を渡すことです。
1. マクロ SUCCEEDED は、呼び出しが成功したことを示す場合は TRUE を返し、呼び出しが失敗したことを示す場合は FALSE を返します。
2. マクロ FAILED は、呼び出しが失敗したことを示す場合は TRUE を返し、呼び出しが成功したことを示す場合は FALSE を返します。FAILED マクロを使用して、前のコード セグメントを変更できます。
if( FAILED(hr) ) { //Handle the failure. } else { //Handle the success. }
上記のコード スニペットは、E_NOTIMPL エラーと E_INVALIDARG エラーを処理します。
ほとんどのメソッドの戻り値 HRESULT は構造体の値ですが、いくつかのメソッドの戻り値 HRESULT は単純な整数値です。これは、整数値を返すメソッドは常に正常に呼び出すことができることを意味します。このタイプの戻り値を SUCCESS マクロに渡すと、マクロは常に TRUE を返します。一般的な例は、IUnkoown::Release メソッドです。このメソッドの機能は、オブジェクトの使用数を解放 (デクリメント) し、オブジェクトの現在の使用数を返すことです。使用回数は、オブジェクトの存続期間を識別するために使用されます。
ポインターのアドレス
COM メソッドのリファレンス ページをいくつか見たことがある方は、次のような状況に遭遇したことがあるかもしれません。
HRESULT CreateDevice( . . . IDirect3DDevice8 **ppReturnedDeviceInterface )
一般に、C または C 開発者はポインターに精通しており、COM は通常、追加の間接標準を使用します。標準は、2 つのアスタリスク (**) の後に型指定と、典型的な「pp」プレフィックスが付いた変数名です。前の例では、ppReturnedDeviceInterface パラメーターは IDirect3DDevice8 インターフェイスへのポインターのアドレスです。
c とは異なり、COM オブジェクトのメソッドに直接アクセスすることはできないため、メソッドを公開するインターフェイスへのポインターを取得する必要があります。オブジェクト インターフェイスのメソッドを呼び出す構文は、ポインターを使用して C メソッドを呼び出す構文と同じです。たとえば、IMyTnterface::DoSomething メソッドを呼び出すには、次の構文を使用するだけです。IMyInterfance *pMyTface; . . . pMyIface->DoSomething(...) ;
COM オブジェクト インターフェイスへのポインターの場合、インターフェイスへのポインターを直接作成することはできません。このポインターを取得するには、1 つ以上の他のメソッドを呼び出す必要があります。例: 前述の CreateDevice メソッド。
このメソッドを通じてインターフェイス ポインターを取得するには、要求したインターフェイスを指す変数を宣言する必要があります。この変数のアドレスを CreateDevice メソッドに渡します。つまり、変数のアドレスをこのメソッドに渡す必要があります。このメソッドが返されると、この変数は要求したインターフェイスを指すようになり、このポインターを通じてこのインターフェイスのメソッドにアクセスできるようになります。
プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !
以上がJavaScriptのCOMオブジェクトとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが
