問題タブ [activex]
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.
c# - IE の .NET ActiveX コンポーネント - ブラウザ リファレンスの入手方法
私は、COM と IE のアーキテクチャについて、危険であるというだけの十分な知識を持っていることを認めます。次のような C# .NET ActiveX コントロールが動作しています。
regasm を使用してタイプ ライブラリを登録および作成しました。
そして、これをjavascriptで正常にインスタンス化できます:
CTIActiveX 内でクライアント サイト(ブラウザ ウィンドウ)への参照を取得するにはどうすればよいですか。IObjectWithSite を実装して BHO でこれを実行しましたが、これが ActiveX コントロールの正しいアプローチだとは思いません。Javascript でインスタンス化しようとしたときに CTIActiveX にインターフェイス (IObjectWithSite のような COM インターフェイスを意味します) を実装すると、オブジェクトが自動化をサポートしていないというエラーが表示されます。
c# - .NET WebBrowser コントロールでダイアログをブロックする
ユーザーの操作なしでいくつかのページをナビゲートするために使用される.NET 2.0 WebBrowser コントロールがあります (聞かないでください...長い話です)。このアプリケーションはユーザーを必要としないため、WebBrowser コントロールの ScriptErrorsSuppressed プロパティを true に設定しました。これにより、VS 2005 に含まれるドキュメントには、[...]「基になる ActiveX コントロールから発生するすべてのダイアログ ボックスが非表示になる」と記載されています。スクリプト エラーだけではありません。」ただし、MSDN の記事ではこれについて言及されていません。ポップアップを防ぐ NewWindow イベントをキャンセルすることができたので、それはうまくいきました。
これらのいずれかを使用して、すべてのダイアログやスクリプト エラーなどを正常にブロックした経験のある人はいますか?
編集
これは IE のスタンドアロン インスタンスではなく、Windows フォーム アプリケーション上にある WebBrowser コントロールのインスタンスです。誰でもこのコントロール、または基になるコントロールAxSHDocVWの経験がありますか?
もう一度編集
申し訳ありませんが、これについて言及するのを忘れていました... OK ボタンだけでJavaScript の alert()をブロックしようとしています。多分私は IHTMLDocument2 オブジェクトにキャストしてスクリプトにアクセスすることができます.MSHTMLを少し使ったことがあります.
security - Vista での保護モードとの戦い
私たちのアプリケーションは通常、クライアントを IE (XP 以前) にダウンロードしてインストールするために ActiveX コントロールを使用していましたが、ユーザー ベースが "保護モード" をオンにした Vista ボックスが増えているため、調査する必要があります。
では、今後、プロテクト モード API を使用することに頭を悩ます価値はありますか? これにより、アプリが実行する必要があること (ローカル ファイルの場所への書き込み、他のアプリケーションへのアクセスなど) を実行するためのダイアログ ボックスと管理者権限が殺到することになりますか?
必要に応じて、クライアントをダウンロードしてインストールするという汚い仕事をする非ブラウザベースのインストーラーアプリを追加することに半分傾いています...これは一度だけインストールする必要があり、大規模な企業構造ではそうなる可能性がありますITによって押し出されました。
私が見逃している他のアイデアはありますか?
c++ - C++ での COM イベントの発生 - 同期または非同期?
MS ATL ライブラリを使用して記述された ActiveX コントロールがあり、pDispatch->Invoke(..., DISPATCH_METHOD)
. コントロールは .NET クライアントによって使用されます。私の質問はこれです。イベントの発生は同期呼び出しですか、それとも非同期呼び出しですか? 私の懸念は、同期の場合、イベントを処理するアプリケーションがすぐに返されない限り、パフォーマンスの問題を引き起こす可能性があることです。
.net - 64 ビット COM 相互運用機能を備えた 64 ビット .NET DLL をビルドする方法は?
x64 を対象としたマネージ DLL をビルドし、x64 COM 経由で公開する必要があります。ウォークスルー、良い記事などが必要です...
相互運用性はかなり単純ですが、両側で x64 について話していると、何も見つかりません。
c# - コードのみで AxHost を作成する方法 [C#]
COM ラッパーを使用して Windows Media Player とやり取りしています。
AxHost を使用してプレーヤーを何らかの方法でラップしています。私にとっては、すべて内部の魔法にすぎません ^^
AxHost.AttachInterfaces は次のようになります。
この AxHost を Windows フォーム コントロールでホストしている限り、すべてが機能しています。しかし、コンストラクターでイベントをフックすることはできません。
たとえば、これは機能しません。
remote.Player は常に null であり、プログラムは NullReferencesException でクラッシュします。
AttachInterfaces() のコードは、フォームが描画された後、または他のすべてが完了した後にのみ実行されます。
手で AttachInterfaces() を呼び出してみましたが、GetOcx() が何も返さないため、それも機能しませんでした。
では、コンソール アプリケーションなどで使用するために、Windows フォームを使用せずに AxHost を継承したコントロールをインスタンス化するにはどうすればよいでしょうか。
com - OLEオートメーションのクラスライブラリを作成するにはどうすればよいですか?
私はExcelアドインを持っており、非常に多くのクラスモジュールを追加しているため、非常にかさばっています。MS Officeスイートの他のアプリで再利用できるように、タイプライブラリまたはCOMパッケージに変換したいと思います。
アドインをクラスライブラリプロジェクトとしてVisualStudioに移植しましたが、ExcelAutomationはコンパイルされた.dllファイル内のクラスを認識しません。直感的には、コードにマニフェストやインターフェイスなどが必要になると思います。
OLEオートメーションで使用するクラスのメソッドとプロパティを公開するには、何を知っておく必要がありますか?
c# - C#からActiveX WebBrowserでJavaScript変数を設定/取得しようとしています
ActiveX WebBrowser コントロールを含む Windows アプリケーションがあります。このアプリケーションの通常の操作の一部として、ActiveX WebBrowser コントロールによって表示されるページに変更が加えられます。これらの変更の一部には、ActiveX WebBrowser に読み込まれる Web ページに JavaScript 変数を設定することが含まれます。
この変数は C# 内で初期化する必要があります (元は、VB6 コードが値を初期化していました)。この変数の値は、COM 可視クラス オブジェクトです。
ただし、簡単にするために、問題を文字列値の設定に減らしました。元のページにはフレームなどが含まれていますが、次のようなページでも同じ問題が発生します。
フィールド変数にアクセスして値を代入します。VB6 では、このコードは非常に単純でした。
ただし、C# では、次のような別のトリックに頼る必要がありました。
このページのポイントは、変数が C# によって適切に割り当てられているかどうかをテストすることです。ボタンをクリックすると、C# によって注入された新しい値が生成されます。たとえば、ページ内のボタンをクリックすると、「newValue」というアラートが表示されます。
これは最初は機能しますが、ページをリロードすると機能しません。後続の呼び出しでは、変数の値を設定できませんfield
。
以前にこの種の操作を行った経験のある人はいますか?
javascript - JavascriptでActiveXイベントを処理する方法
これは、ここでの回答のフォローアップのようなものです。
WebブラウザのJavascriptで処理する必要のあるイベント(「msg」パラメータを持つ「ReceiveMessage」)を発生させるカスタムActiveXコントロールがあります。これまで、さまざまなプロジェクトでこれを実現するために、次のIEのみの構文を使用することができました。
ただし、コントロールが埋め込まれているレイアウト内では、Javascriptはコントロールを見つけることができません。具体的には、これをプレーンHTMLページに入れると正常に機能しますが、<Form>
タグでラップされたASPXページに入れると、「MyControlisundefined」エラーが発生します。以下のバリエーションを試しました。
...しかし、Javascriptエラー「GetControlisundefined」が発生します。
ActiveXコントロールから送信されるイベントを処理する適切な方法は何ですか?今のところ、これをIEで機能させることにのみ関心があります。これは、私たちが行っていることのカスタムActiveXコントロールである必要があります。
ありがとう。
delphi - アパートメント間の ActiveX イベント
環境: VS2008 (ATL)、Borland Developer Studio 2006。
皆さんこんにちは。ActiveX コントロール イベントに問題があります。
私のアプリのアーキテクチャの簡単な説明は次のとおりです。
STA ActiveX コントロール (別名コントロール) と MTA COM オブジェクト (別名オブジェクト) を含むインプロセス COM サーバーがあります。
以下は、コントロールおよびオブジェクト インターフェイスの IDL 定義です。
クライアントは、MTA オブジェクトを作成し、その DoWork メソッドを呼び出すフォーム上に ActiveX コントロールを備えた Delphi アプリケーションです。
このメソッドは、ActiveX コントロール コクラスの Fire_SomeEvent メソッドを直接呼び出し、「this」をパラメーター (IObject インターフェイスへのポインター) として渡します。Delphi コードはイベントを正常に受信しますが、IObject のメソッドまたはプロパティ(わかりやすくするために idl には示されていません)にアクセスしようとすると、oleaut32.dll でアクセス違反が発生します。
1 つの重要な注意事項 - ATLCPImplMT クラスを使用して、さまざまなスレッドから発生するイベントを実装します (詳細については、 http://support.microsoft.com/kb/280512を参照してください)。この実装により、イベントが発生したときにアパートメントを切り替えることができます (オブジェクトの MTA アパートメントから STA Delphi フォーム アパートメントへ)。標準の ATLCPImpl クラスを使用するとすべて正常に動作するため、この問題は不適切なイベント パラメータのマーシャリングに関連していると考えられます。
マンションをまたぐイベントに制限はありますか?おそらく、activex オブジェクトを正しく操作するには、特別な Delphi 環境のセットアップが必要です...