別のアプリケーションで (ダイアログ内にある) ListView コントロールにアクセスし、コントロール内からデータを取得しようとしています。私が書いているWin32コード(適切なコメント付き)は次のとおりです。
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
}
コードは実行されていますが、コントロール内からデータを取得していません。ただし、コントロール内から正しいアイテム数を取得できますが、データは取得できません。
もう 1 つの方法は、MSAA フックを使用してデータを取得することです。しかし、それは非常に長く面倒なプロセスになります。ここでアイデアが不足しています。助けてください。
ありがとう、