質問

tl; dr:ManagedSpyを使用してプログラムのDatagridViewコントロールのプロパティを閲覧すると、そのプログラムがそのメモリ内でXMLとしてDatagridViewデータを割り当てることになります。プログラムから同じことを起こさせるにはどうすればよいですか? (それはまったくdatagridviewではありません、コントロールはinfragistics.win.ultrawingrid.ultragridと呼ばれます)

完全なストーリー:

ManagedSpyを使用しています(http://msdn.microsoft.com/en-us/magazine/cc163617.aspx)DataProgramと呼ばれるプログラムをスパイする。 ManagedSpyのスクリーンショットについては、そのページの図2を参照してください。

DataProgramには、必要な情報がいっぱいのDatagridViewが含まれています。また、その情報をExcelファイルにエクスポートするオプションもあります。 CSVにクリップボードにエクスポートするオプションがあります。

ManagedSpyのTreeViewでDataProgramのコントロールを通過すると、情報が必要な正確なDatagridViewを見つけることができます。右クリックして「ウィンドウを表示」を選択できるので、コントロールの周りにボックスをフラッシュできるため、正しいものであることがわかります。

これが奇妙な部分です:左クリックして、マネージドスピのウィンドウの右側にそのプロパティを表示すると、魔法のようなことが起こります。テーブル全体がXMLとしてDataProgramのメモリ内に割り当てられているため、メモリスキャナーの助けを借りて、テーブル全体が目の前にあることがわかります...そして、ゴミコレクターがそれを取り除きます。しかし、それはいくつかの良い30秒ほどそこにあります(もちろん、GCは非決定的であるため、それは異なります)。ちなみに、制御クラスはinfragistics.win.ultrawingrid.ultragridであり、それはビーフアップされたdatagridviewのようなものです(私は想像します)。

私の質問は次のとおりです。ご覧のとおり、XMLテーブルが割り当てられた正確なポイントでDataProgramのメモリを読みたいと思います。私はすでにメモリを読む方法を知っています(readprocessmemoryを使用)。 ManagedSpyのようにプログラムからそのXMLテーブルを割り当てるためにデータプログラムをトリガーする方法を学びたいと思います。 ManagedSpyのソースコードはWebサイトから入手できますが、管理者としてのみ実行されるため、デバッグすることはできません。何らかの理由で実行できません。私は、自分のプログラムから、DataProgramを誘発してそのXML情報を作成して、そのメモリから読むことができる方法を知る必要があります。

役に立ちましたか?

解決

関数をrespreadwindows()とイベントTreewindow_afterselectおよびtreewindow_beforeExpandでコピーし、TreeViewとPropertyGridを追加し、ManagedSpylib.dllを参照し、次にいくつかのコードを作成してTreeViewを歩き、必要な機能を複製することができる正しいノードを選択するためにいくつかのコードを作成します。 。

どうやらManagedSpylibの動作方法は、私が思ったよりも複雑です(主にManaged C ++、LOLにあるため)が、MSDNの記事では、非管理コード(x86asmなど)でコード化された通常のDLLを使用することで同じことを達成できると述べています。現在、このライブラリは私が必要とする以上に多くのことをしているので、後でそれを試みます(イベントなどを追跡します)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top