問題タブ [tstcon32]
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.
debugging - ActiveX コントロールからのデバッグ出力
私は ActiveX コントロールを開発しています。他のコントロールと同じように、デバッグ出力を tstcon32 のコンソール領域に出力したいと考えています。それを行っているシステムコールは何ですか?
標準出力はそうではないようです
winforms - 1つのホストコンテナではActiveXコントロールが空白になりますが、他のコンテナでは空白になりません
レガシーアプリケーションのプラグインを作成するには、ActiveXを使用する必要があります。いくつかの関連するスタンドアロン製品のコードベースを共有できるように、C#を使用しています。
SDKのテストコンテナ(TstCon32.exe)でコントロールをホストすると、すべてが正常に機能します。問題は、最初にコントロールをクリックしたときにターゲットアプリケーションにロードしようとすると、クリックしたアイテム(テキストボックスまたはデータグリッドセル)を除くすべてがコントロールグレーで塗りつぶされ、背景色を変更した場合です。他の何かへのコントロールは、背景が私が指定したのと同じ色のままですが、すべてのコントロールはまだコントロールグレーで覆われています(コンテナアプリから?)。追加のコントロールをクリックするとペイントされ、コントロールのサイズを変更するとすべてが再ペイントされます。最初のブランキングの後、次にコピーが作成されるまで、コントロールは正常に機能します。
.net - 親によって閉じられたときにActiveX(COM)コントロールをクリーンアップするための適切な方法は何ですか?
ActiveX用にラップしたときに.netコントロールが適切にクリーンアップされないという問題があります。
デフォルトの動作では、SDKのテストコンテナアプリ(TstCon32.exe)を閉じようとすると、GUIなしのプロセスとして実行されたままになります。
私が最初にグーグルで見つけた回避策は、WndProcをオーバーライドしてEnvironment.Exit(0)
手動で呼び出すことでした。これにより、TstCon32.exeが完全にシャットダウンしました。ただし、コントロールをホストする必要があるアプリケーションが壊れています。
アプリはMDIであり、コントロールを含むページが閉じられたときにWM_DESTROYが送信されます。その時点で、Environment.Exit(0)
呼び出しはアプリ全体を吹き飛ばします。別の方法として試しApplication.Exit()
ましたが、TstCon32はまだ見えないまま実行されています。
c++ - ole32.dll への呼び出しを自分のプロキシ DLL にリダイレクトするにはどうすればよいですか?
開始しているプロセスでCoCreateInstanceへのすべての呼び出しを検出しようとしています(理想的には、子プロセスでも呼び出しを検出できます)。
これを実現するために、Windows 7 で Microsoft Visual Studio 2008 を使用して、標準ole32.dll
ライブラリ内の 1 つを除くすべての呼び出しを転送するプロキシ DLL を作成します (例:
Intercepted: Windows Hacking via DLL Redirectionなど) 。結果の DLL は問題ないように見えますが、既存のプログラム (標準のActiveX コントロール テスト コンテナー (tstcon32.exe)をテスト アプリケーションとして使用しています) にプロキシ DLL を取得させることができません。私が何をしても、プログラムはProcess ExplorerC:\Windows\SysWow64\ole32.dll
に従って常にピックアップしているようです。これまでにいくつかのことを試しました:
- プロキシ DLL を含むディレクトリを先頭に追加し
PATH
、プログラムを呼び出します。効果はないようでした。 - プロキシ DLL を、呼び出されたプログラムと同じディレクトリにコピーします。運がない。
- Dynamic-Link Library Redirection の
.local
記事で説明されているように、呼び出されたプログラムと同じディレクトリにファイルを作成し、プロキシ DLL を同じディレクトリに配置しますが、どちらも機能しませんでした。しかし、その後、これが最近の Windows バージョンでは機能しなくなったことを読みました。さらに、はレジストリ設定によると「既知の DLL」であるため、ベースのリダイレクトはおそらく機能しません。ole32.dll
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs
.local
- マニフェストを使用したDLL リダイレクトの質問などで説明されているように、マニフェスト ベースのリダイレクトを使用しますが、それも効果がないようです。ただし、このアプローチは自明ではないように思われるため、何か間違ったことをした可能性があります。
ole32.dll
スタブ DLL の使用など、呼び出しを標準 DLL にリダイレクトした経験のある人はいますか? どのようにしてアプリケーションにスタブ DLL を取得させましたか?
java - Java => ActiveX コンポーネント = 相互作用のない Swing
Java Bean コンポーネントを作成してから、このチュートリアルのように ActiveX dll に生成します。
Swing
パネルです
夫婦JButton
で
しかし、tstcon32.exe でテストすると、実際にはボタン (JButton) を押すことができません。絵のようです。
どうしたの?
ありがとうございました
upd: AWT (java.awt.Panel、java.awt.Button) で試しました - 同じ話です。見えますが、ボタンを押すことはできません
c# - C# で ActiveX コントロールを作成するには?
C# で機能する ActiveX コントロールを作成できません。成功せずにそうするために、チュートリアルに従ってみました。
このコードを含むサンプル クラス ライブラリ プロジェクトを作成します。
次に、次の手順を実行しました。
- プロパティ => アプリケーション => アセンブリ情報 => アセンブリを COM 可視にする
- ビルド => COM 相互運用に登録する TRUE (チェック済み)
- アセンブリの強力な名前を作成 (署名)
- プロジェクトをビルドする
regasm MyDll.dll /tlb /codebase
Prisoner.PrisonerControl
tstcon32 で見えない=(
私のOSはWinXP x86です。
UPD: VBScript から動作します:
しかし、tstcon32 には表示されません。
c# - それを使用する .NET アプリケーションのプロセスを使用して、ActiveX コントロールをデバッグする方法は?
VS2008 を使用してネイティブ C++ で ActiveX コントロール (OCX) を作成しました。
Microsoft ActiveX コントロール テスト コンテナー (TstCon32.exe) のスレッドと、コントロールを参照する独自のネイティブ cpp アプリケーションにアタッチすると、正しくデバッグできます。
MyCtrlNameLib.dll
ただし、およびでコントロールを参照する .NET winform アプリケーションのスレッドにアタッチしてデバッグすることはできませんAxMyCtrlNameLib.dll
。ブレークポイントに次のメッセージが表示されます。
ブレークポイントは現在ヒットしません。このドキュメントのシンボルは読み込まれていません。メッセージ
.NET Winform アプリケーションによって参照される ActiveX コントロールをデバッグする方法はあるのだろうか。
問題は、.NET アプリケーションが MyCtrlName.ocx をロードしていないため、MyCtrlName.pdb が追加されていないことだと思います。代わりに InterOp.MyCtrlNameLib.dll と AxInterOp.MyCtrlNameLib.dll をロードします。