同僚と私は、アクティブな X コントロールを使用してページ上の Web カメラを操作しなければならないという厄介な状況に遭遇しました。
Active X コントロールのボタンに JavaScript イベント ハンドラーを割り当てて、クリックしたときにページ上でアクションを実行することは可能ですか。それとも、Active X コントロールを操作する HTML ページ自体にボタンを作成する必要がありますか?次に、ページで必要なアクションを実行できますか?
同僚と私は、アクティブな X コントロールを使用してページ上の Web カメラを操作しなければならないという厄介な状況に遭遇しました。
Active X コントロールのボタンに JavaScript イベント ハンドラーを割り当てて、クリックしたときにページ上でアクションを実行することは可能ですか。それとも、Active X コントロールを操作する HTML ページ自体にボタンを作成する必要がありますか?次に、ページで必要なアクションを実行できますか?
既存の ActiveX コントロールを使用してください。Flash や Silverlight のように。Flash には Web カメラのサポートが組み込まれており、JavaScript を介して制御できます。Silverlight には組み込みのカメラ サポートはありませんが、JavaScript との統合は素晴らしいものです。
独自のものを作成する必要がある場合でも、心配する必要はありません。JavaScript とやり取りするのは簡単です。インターフェイスを公開するだけIDispatch
です。
イベントについては、接続ポイントについて学ぶ必要があります。
はい!JavaScript コードにイベント ハンドラー関数を実行させる C++/ActiveX ランドでイベントをスローできます。JavaScript と CSS を介してすべての GUI 機能を実行する、ボタンや視覚的なフィードバックのない、完全に非表示の ActiveX コントロール (ページの背景と同じ色) を作成することさえできました。
編集: フランクのアドバイスは正しいです。スクリプト イベントに関するリンクは次のとおりです。
私の戦略は、ブラウザーで更新を強制したいときに MyUpdate という C++ 関数 (IConnectionPoint を実装する) を呼び出すことでした。
(また、Fire_MyUpdate メソッドで Windows メッセージをポンピングするようにしました。これは、JavaScript コードが ActiveX コントロールのメソッドを呼び出すことによって C++ ランドにコールバックする場合があるためです。これにより、ブラウザーのフリーズが回避され、JavaScript GUI の応答性が維持されます。キャンセルボタン。)
ブラウザー側では、JavaScript コードにはオブジェクトを参照するグローバル変数があり、その後に「::」が続き、その後にメソッド名が続きます。
function Uploader::MyUpdate()
{
// ... code to fetch the current state of various
// properties from the Uploader object and do something with it
// for example check Uploader.IsActive and show or hide an HTML div
}