2010-04-26 3 views
0

TL으로 메모리를 할당하게하기 위해, DR : ManagedSpy를 사용하여 프로그램의 DataGridView 컨트롤의 속성을 검색 할 때 는이 프로그램이 메모리에 XML로는 DataGridView에 데이터를 할당하는 것이됩니다. 내 프로그램에서 동일한 문제가 발생할 수 있습니까? 전체 기사는 방법의 GridView는 XML

(가, 컨트롤이 Infragistics.Win.UltraWinGrid.UltraGrid라고 꽤 DataGridView에 아닙니다) :

내가 ManagedSpy (http://msdn.microsoft.com/en-us/magazine/cc163617.aspx)를 사용하고 프로그램을 감시하기 위해 우리가 거 DataProgram을 참조하십시오. ManagedSpy의 스크린 샷은 해당 페이지의 그림 2를 참조하십시오.

DataProgram에는 필요한 정보가 가득한 DataGridView-ish가 있습니다. 또한 해당 정보를 Excel 파일로 내보낼 수있는 옵션이 있습니다. CSV로 내 클립 보드로 내보낼 수있는 옵션이 있습니다.

ManagedSpy의 treeview에서 DataProgram의 컨트롤을 살펴볼 때 정보가 필요한 정확한 DataGridView를 찾을 수 있습니다. 마우스 오른쪽 버튼으로 클릭하고 "창 표시"를 선택하면 컨트롤 주위에 상자가 깜박이기 때문에 올바른 방법이라는 것을 알고 있습니다.

이상한 부분이 있습니다. ManagedSpy의 오른쪽에있는 속성을 보려면 왼쪽 버튼을 클릭하면 마술처럼 생깁니다. 전체 테이블이 DataProgram의 메모리 내에 XML로 할당되어 있으므로 메모리 스캐너 덕분에 테이블 전체가 눈앞에있는 것을 볼 수 있습니다. 그러면 가비지 수집기가이를 제거합니다. 그러나 좋은 30 초 정도가 걸릴 것입니다 (물론 GC는 비 결정적입니다). 그건 그렇고, 컨트롤 클래스는 Infragistics.Win.UltraWinGrid.UltraGrid이며, 그것은 DataGridView (내가 상상하는 것)와 같은 것입니다.

여기 내 질문 : 내가 알기로는 정확한 포인트에서 DataProgram의 메모리를 읽고 싶습니다. 할당 된 XML 테이블이 있습니다. 이미 (ReadProcessMemory를 사용하여) 메모리를 읽는 방법을 알고 있습니다. ManagedSpy처럼 내 프로그램에서 XML 테이블을 할당하기 위해 DataProgram을 트리거하는 방법을 배우고 싶습니다. ManagedSpy의 소스 코드는 웹 사이트에서 구할 수 있지만 관리자로만 실행되기 때문에 디버깅 할 수 없으며 어떤 이유로 든 실행할 수 없습니다. 필자의 프로그램에서 DataProgram을 자극하여 XML 정보를 만들어서 메모리에서 읽을 수있게되었습니다.

답변

0

RefreshWindows() 및 이벤트 treeWindow_AfterSelect 및 treeWindow_BeforeExpand를 복사하여 TreeView 및 PropertyGrid를 추가하고 ManagedSpyLib.dll을 참조한 다음 treeView를 걷고 일부 코드를 작성하여 복제 할 수 있었던 올바른 노드를 선택합니다. 내가 필요한 기능.

분명히 ManagedSpyLib의 작동 방식이 더 복잡합니다. (주로 관리되는 C++, LOL이기 때문에) 생각했지만 msdn 기사에서는 관리되지 않는 코드 (예 : x86asm). 나는이 라이브러리가 현재 필요로하는 것보다 더 많은 일을하기 때문에 (이벤트 등을 추적) 나중에 시도하고 할 것이다.