tl; dr:当使用托管播种浏览程序的DataGridView Control的属性时,它会导致该程序在内存中将其DataGridView数据分配为XML。我如何使我的程序发生同样的事情? (这不是一个datagridview,该控件称为infragistics.win.ultrawingrid.ultragrid)

全文:

我正在使用ManagedSpy(http://msdn.microsoft.com/en-us/magazine/cc163617.aspx)监视我们将其称为数据份图的程序。请参阅该页面上的图2,以获取托管领域的屏幕截图。

DataGrogram具有我需要的DataGridView-充满信息。它还可以选择将该信息导出到Excel文件。我宁愿选择将其导出到我的剪贴板中。

当我浏览todagrogram在takanedspy的TreeView上的控件时,我可以找到需要此信息的确切datagridView。我知道这是正确的,因为我可以右键单击它并选择“显示窗口”,并且它将在控件周围闪烁一个盒子。

这是一个奇怪的部分:当我左键单击它以查看其属性在托管窗口的右侧查看其属性时,发生了一些神奇的事情。整个表被分配在数据剖分图的内存中为XML,因此在内存扫描仪的帮助下,我可以看到整个桌子就在我眼前……然后垃圾收集器将其带走。但是它在那里有30秒钟左右的时间(当然会有所不同,而GC是非确定性的)。顺便说一句,控制类是infragistics.win.ultrawingrid.ultragrid,它就像是dataGridView(我想)。

这是我的问题:正如您所看到的那样,我想在其分配的XML表的确切点上读取数据份记忆。我知道如何读取内存(使用ReadProcessMemory)。我想了解如何像托管Spy一样,从程序中触发数据剖图从程序中分配该XML表。请注意,可以从网站上获得ManagedSpy的源代码,但我无法调试它,因为它仅作为管理员运行,由于某种原因,我无法运行它。我只需要知道如何从程序中引起数据份图来创建该XML信息,以便可以从其内存中阅读它。

有帮助吗?

解决方案

通过复制函数refreshwindows()和事件treewindow_afterselect和treewindow_beforeexpand,添加treeview和propertyGrid,引用the Managedspylib.dll,然后编写一些代码来走动treeview并选择正确的节点,我需要重复我所需的功能我需要我重复我的功能, 。

显然,托管西西伯的工作方式比我想的更复杂(主要是因为它在托管的C ++,LOL中),但是MSDN文章说,使用在非管理代码中编码的普通DLL可以实现同样的情况(例如X86ASM)。我将稍后尝试这样做,因为当前该库的作用远超过我需要的(它跟踪事件等)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top