다른 응용 프로그램의 ListView 컨트롤 (대화 상자 내에 있음)에 액세스하려고 시도하고 컨트롤 내에서 데이터를 가져옵니다. 코드가 실행Win32- ListView 가져 오기 다른 응용 프로그램에서 콘텐츠 제어
HWND hListView32 = hRoot; //HANDLE to the ListView control within the Dialog, having class name - "SysListView32"
int cnt = (int) ::SendMessage(hListView32, LVM_GETITEMCOUNT, 0, 0L); //returns CORRECT item count of the ListView Control
int nItem=0,nRes;
for(int nItem=0;nItem<cnt;nItem++)
{
LVITEM LvItem; // ListView Item struct
char Text[255]={0};
char Temp[255]={0};
char Temp1[255]={0};
memset(&LvItem,0,sizeof(LvItem));
LvItem.mask=LVIF_TEXT;
LvItem.iSubItem=1; //Trying to get the 2nd Colomn text
LvItem.pszText=Text; //Does not returns any Text, after the below SendMessage is executed???
LvItem.cchTextMax=256;
LvItem.iItem=nItem;
nRes = (int)::SendMessage(hListView32,LVM_GETITEMTEXT, nItem, (LPARAM)&LvItem);
DWORD dd = ::GetLastError(); //returns 0
}
하지만, 내가 컨트롤 내에서 데이터를 받고 있지 않다 : 여기에 내가 쓰고 있어요 (appropiate 의견)는 Win32 코드입니다. 그러나 컨트롤 내에서 올바른 항목 수를 검색 할 수 있지만 데이터가 없습니다.
또 다른 방법은 MSAA 후크를 사용하여 데이터를 가져 오는 것입니다. 그러나 그것은 매우 길고 성가신 과정 일 것입니다. 여기서 아이디어가 부족합니다. Pls 도움.
감사합니다.
'LVM_GETITEMTEXT'는 동일한 프로세스 내에서만 작동합니다. 예 : 데이비드 Heffernans 댓글 [이 질문에] (http://stackoverflow.com/questions/4857411/listview-getitem-macro-lv-getitemtext-returns-empty-string-while-getting-ano). – user786653