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