TL;DR: 当使用 ManagedSpy 浏览程序的 DataGridView 控件的属性时,它会导致该程序将其 DataGridView 数据作为 XML 分配到其内存中。我怎样才能让我的程序发生同样的事情?(不完全是DataGridView,控件叫Infragistics.Win.UltraWinGrid.UltraGrid)
全文:
我正在使用 ManagedSpy ( http://msdn.microsoft.com/en-us/magazine/cc163617.aspx ) 来监视我们称为 DataProgram 的程序。有关 ManagedSpy 的屏幕截图,请参阅该页面上的图 2。
DataProgram 有一个 DataGridView-ish,里面充满了我需要的信息。它还可以选择将该信息导出到 Excel 文件。我宁愿选择将其导出为 CSV 到我的剪贴板。
当我在 ManagedSpy 的树视图上浏览 DataProgram 的控件时,我可以找到我需要从中获取信息的确切 DataGridView。我知道这是正确的,因为我可以右键单击它并选择“显示窗口”,它会在控件周围闪烁一个框。
这是奇怪的部分:当我左键单击它以在 ManagedSpy 窗口的右侧查看其属性时,神奇的事情发生了。整个表作为 XML 在 DataProgram 的内存中分配,因此在内存扫描仪的帮助下,我可以看到整个表就在我眼前……然后垃圾收集器将其带走。但是它在那里持续了大约 30 秒(当然它会有所不同,GC 是不确定的)。顺便说一句,控件类是 Infragistics.Win.UltraWinGrid.UltraGrid,它就像一个增强的 DataGridView(我想)。
这是我的问题:如您所见,我想在它分配了 XML 表的确切位置读取 DataProgram 的内存。我已经知道如何读取内存(使用 ReadProcessMemory)。我想了解如何触发 DataProgram 从我的程序中分配那个 XML 表,就像 ManagedSpy 一样。请注意,ManagedSpy 的源代码可从网站获得,但我无法调试它,因为它只能以管理员身份运行,并且由于某种原因我无法使其运行。我只需要知道如何从我的程序中激发 DataProgram 来创建 XML 信息,以便我可以从它的内存中读取它。