2010-12-23 4 views
0

다른 프로세스의 목록보기에서 텍스트를 읽으려고합니다. 지금까지 행과 열 수를 얻을 수있었습니다. 이제 각 셀을 살펴보고 읽으려고합니다. 나는 약간의 연구를했고, 각 셀의 LVITEM을 얻기 위해 SendMessage를 사용해야한다는 것을 알았습니다. 나는 LVITEM.iItem이 행 #이어야하고 LVITEM.iSubItem이 컬럼 #이어야한다고 생각한다. 또한 어떻게 내 char * 텍스트를 가져 오는 것에 대해 갈 것입니다. CString :: GetBuffer를 사용하여 예제를 보았습니다. 하지만 나는 그렇게하지 않았기 때문에 동등하거나 다른 방법이 있을까요? 텍스트가 들어있는 메모리 블록이 다른 프로세스가 소유하고C에서 LVM_GETITEM 및 SendMessage를 사용하여 LVITEM 텍스트 가져 오기

char* itemText; 

LVITEM itemInfo = {0}; 
itemInfo.iItem = r; // r is an int. this should be row # right? 
itemInfo.iSubItem = c; // c is an int, this should be the column # right? 
itemInfo.mask = LVIF_TEXT; 
itemInfo.cchTextMax = 256; 
itemInfo.pszText = itemText; 
SendMessage(procList, 0x1005, 0, (LPARAM)&itemInfo); 

답변

1

때문에, 당신은 당신의 과정에 과정에서 텍스트를 마샬링하는 몇 가지 트릭을 당겨해야합니다.

다음은 2004 년에 수행 한 블로그 게시물입니다. 어떻게 수행 할 수 있는지 보여줍니다. 이 작업을 수행하려면 관리자 권한이 필요합니다. 너무 열심히 보이지 않는 좋아

http://taylorza.blogspot.com/2009/08/archive-hacking-my-way-across-process.html

+0

. 감사! 어떻게하면 읽을 셀을 선택하겠습니까? 예를 들어 설명했거나 잘못 했습니까? – Lienau

+0

@Lienau, 네, 관심있는 하위 항목 (열)을 나타 내기 위해 iSubItem 멤버를 사용합니다. 먼저 로컬 ListView를 사용하여 코드를 자신의 프로세스에서 처리하고 코드를 추가하여 마샬링, 작동 방식과 중단 시간의 각 단계를 알 수 있습니다. –

관련 문제