mailbrush
25.05.2010, 20:30
Значит так. Есть чужая форма (программа), в которой имеется компонент SysListView32, тоесть ListView. Необходимо через WinApi показать текст одного из элементов этого листбокса. Навякал код:
char pszText[20000];
LVITEM * lvi = new LVITEM();
lvi->mask = LVIF_TEXT;
lvi->iItem = 0;
lvi->iSubItem = 0;
lvi->pszText = pszText;
lvi->cchTextMax = 10000;
hWnd = FindWindow(NULL, "чужая прога"); //тут хэндл программы
hWnd = FindWindowEx(hWnd, NULL, "#32770", NULL);
hWnd = FindWindowEx(hWnd, NULL, "SysListView32", NULL); //а вот тут хэндл этого листбокса
i = (int) SendMessage(hWnd, LVM_GETITEM, 0, (LPARAM)&lvi); //на этой строке чужая прога вылетает с "Память не может быть read"
Что только уже не пробовал. Но хэндл есть, т.к. некоторые другие сообщения, которые я передаю ему, работают корректно.
Вобщем, что за трабла, и как её решить? Подозреваю, что я что-то не так сделал в структуре LVITEM.
Пишу на C++, но WinApi
char pszText[20000];
LVITEM * lvi = new LVITEM();
lvi->mask = LVIF_TEXT;
lvi->iItem = 0;
lvi->iSubItem = 0;
lvi->pszText = pszText;
lvi->cchTextMax = 10000;
hWnd = FindWindow(NULL, "чужая прога"); //тут хэндл программы
hWnd = FindWindowEx(hWnd, NULL, "#32770", NULL);
hWnd = FindWindowEx(hWnd, NULL, "SysListView32", NULL); //а вот тут хэндл этого листбокса
i = (int) SendMessage(hWnd, LVM_GETITEM, 0, (LPARAM)&lvi); //на этой строке чужая прога вылетает с "Память не может быть read"
Что только уже не пробовал. Но хэндл есть, т.к. некоторые другие сообщения, которые я передаю ему, работают корректно.
Вобщем, что за трабла, и как её решить? Подозреваю, что я что-то не так сделал в структуре LVITEM.
Пишу на C++, но WinApi