Вход

Просмотр полной версии : Работа с SysListView32 (L2Walker)


Kilatif
28.02.2011, 23:09
В общем...
Такая задача:
Есть чужое окно. В чужом окне есть компонент SysListView32. Мне нужно управлять этим компонентом. Ну хотя бы для начала получить из этого SysListView32 все данные что там есть.

Что я пробовал:
Есть функция:
function ListView_GetItem(hWnd: HWND; var pItem: TLVItem): Bool;
Эта функция получает 1 строку из SysListView32.
Я пробовал через эту функцию получить хотя бы 1 итем, но безрезультатно, если передавать туда переменную типа TLVItem, то на выходе она выходит пустая все равно... Кто сталкивался с такой задачей и может мне хоть в чем-нибудь помочь?

P.S. Если конкретно - я пытаюсь управлять ItemList'ом волкера

J-Fobos
01.03.2011, 00:22
Сейчас я предложу не совсем то, чего хочет автор :)
Волкер обычно используется в комплекте с ПХ или ВП, так почему бы не воспользоваться для решения поставленной задачи функционалом этих программ?

Kilatif
01.03.2011, 00:29
Сейчас я предложу не совсем то, чего хочет автор :)
Волкер обычно используется в комплекте с ПХ или ВП, так почему бы не воспользоваться для решения поставленной задачи функционалом этих программ?

Привык уже просто =) Да и я столкнулся с чем-то новым, а мне нравится копаться в чем-то новом, может потом пригодится)

Aries
01.03.2011, 01:57
ListView_GetItemCount
и дальше в цикле ListView_GetItem

Kilatif
01.03.2011, 03:25
ListView_GetItemCount
и дальше в цикле ListView_GetItem

Я же написал в первом посте, что пробовал так - не получается (переменная, которую я подаю туда, остается такой же)

Aries
01.03.2011, 10:02
LVITEM lvi;
lvi.mask = LVIF_TEXT | LVIF_STATE;
lvi.stateMask = 0x3000;
lvi.pszText = tmpParam;
lvi.cchTextMax = sizeof(tmpParam);
for (int i = 0; i < RowCount; ++i) {
lvi.iSubItem = 0;
lvi.iItem = i;
if(!ListView_GetItem(hList,&lvi)) continue;
lvi.iSubItem = 1;
if(!ListView_GetItem(hList,&lvi)) continue;
lvi.iSubItem = 2;
if(!ListView_GetItem(hList,&lvi)) continue;
}
Что-то типо того... Потом все значения из lvi бери...iSubItem - столбец... RowCount - число строк
tmpParam - буфер, куда записывается строка со значением ячейки

Kilatif
01.03.2011, 15:06
Не знаю как в си, но в делфе это не работает.Вся беда в том что нельзя вот так вот осуществлять адресацию, т.е. передавать адрес переменной в которую будет писать. Потому что мы посылаем этот адрес в чужую программу, а у нее не будет доступа к области памяти нашей программы (где и хранится эта переменная). Что бы решить задачу, нужно использовать виртуальную память.
В общем... я уже решил задачу =)

Aries
01.03.2011, 15:20
Не знаю как в си, но в делфе это не работает.Вся беда в том что нельзя вот так вот осуществлять адресацию, т.е. передавать адрес переменной в которую будет писать. Потому что мы посылаем этот адрес в чужую программу, а у нее не будет доступа к области памяти нашей программы (где и хранится эта переменная). Что бы решить задачу, нужно использовать виртуальную память.
В общем... я уже решил задачу =)

Хм, возможно и так... Но я помню, что на каком-то форуме доказывалось, что подобные сообщения с передачей указателя нормально отрабатывают с разными приложениями (но сам лично не тестил, все делал только в рамках своего приложения)

Kilatif
01.03.2011, 15:25
Хм, возможно и так... Но я помню, что на каком-то форуме доказывалось, что подобные сообщения с передачей указателя нормально отрабатывают с разными приложениями (но сам лично не тестил, все делал только в рамках своего приложения)

ну вот я потестил, ничего не выходит...

Aries
01.03.2011, 15:39
На досуге надо будет тоже ради интереса глянуть)))

Mlex
01.03.2011, 16:15
Kilatif, а приер реализации можешь кинуть?

Kilatif
01.03.2011, 18:48
Kilatif, а приер реализации можешь кинуть?

ну... получить полностью итем через GetItem я так и не смог) Но я обошелся получением текста (GetItemText). Если все таки надо, могу скинуть

Aries
01.03.2011, 20:34
ну... получить полностью итем через GetItem я так и не смог) Но я обошелся получением текста (GetItemText). Если все таки надо, могу скинуть

Все, даж тестировать теперь не буду xD
Передача указателя явно работает в данном случае значит)))
Во-первы в этом случае ты в любом случае одним из параметров указываешь буфер, куда строка помещается...
А во-вторых этот макрос в любом случае так же создает LVITEM)

Kilatif
01.03.2011, 20:46
Все, даж тестировать теперь не буду xD
Передача указателя явно работает в данном случае значит)))
Во-первы в этом случае ты в любом случае одним из параметров указываешь буфер, куда строка помещается...
А во-вторых этот макрос в любом случае так же создает LVITEM)

Я пробовал делал как ты писал, это я делал в первую очередь и ничего абсолютно не получилось. После я уже нашел инфу о том что беда с виртуальной памятью. Но если у тебя получится сделать - выкладывай исходники, очень будет любопытно посмотреть в чем же я все таки ошибся)

Aries
01.03.2011, 22:54
Я пробовал делал как ты писал, это я делал в первую очередь и ничего абсолютно не получилось. После я уже нашел инфу о том что беда с виртуальной памятью. Но если у тебя получится сделать - выкладывай исходники, очень будет любопытно посмотреть в чем же я все таки ошибся)

Если надо, могу попробовать... А можешь и сам, если интересно)
Если брать C++, получается ты юзаешь такой макрос
#define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_) \
{ LV_ITEM _macro_lvi;\
_macro_lvi.iSubItem = (iSubItem_);\
_macro_lvi.cchTextMax = (cchTextMax_);\
_macro_lvi.pszText = (pszText_);\
SNDMSG((hwndLV), LVM_GETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_macro_lvi);\
}
Вот и попробуй ради интереса заметить этот макрос данным текстом, если норм, то дальше пробуй
#define ListView_GetItem(hwnd, pitem) \
(BOOL)SNDMSG((hwnd), LVM_GETITEM, 0, (LPARAM)(LV_ITEM *)(pitem))

Хотя по сути, если тебя устраивает получение только текста, то и заморачиваться не стоит)))

FrankJScott
12.08.2025, 05:47
why not just google it (https://www.google.com)

FrankJScott
27.02.2026, 22:19
For the person inquiring about daftar situs online, website judi slot online, dana slot login, download apk slot, situs game slot terpercaya, kumpulan situs slot terbaik, link terpercaya, situs slot terbaru, poker slot, deposit slot adalah, I highly suggest this top rated tajir4d url (https://sebastian0e05exo1.activablog.com/profile) or slot dan, withdraw slot, situs baru terpercaya, situs ovo slot, kumpulan situs slot terbaru, slot judi online terpercaya, situs terpercaya, daftar slot game, slot online terbaru, penjudi indonesia, which is worth considering with this website about dvltoto forum (https://dylan3h28pmh0.get-blogging.com/profile) not to mention situs idn slot, bola terpercaya, situs slot yg resmi, dompet slot online, slot terbaik indonesia, slot bonus new, slot game terpercaya, situs slot to, link slot terpercaya di indonesia, situs slot terbaik di indonesia, not to mention this awesome tajir4d link (https://julian0u61ghi5.iyublog.com/profile) which is also great. Also, have a look at this learn more for dvltoto info (https://ryder6m52ino4.thecomputerwiki.com/user) alongside all link judi online, spin slot, slot pragmatic play, judi online indonesia, daftar situs slot online, slot dana terbaik, judi online terbaru, slot casino indonesia, situs slot ovo, game terbaru slot, as well as this great post to read for dvl toto info (https://geniusbookmarks.com/story21120874/situs-slot-online-dan-casino-togel) which is worth considering with situs judi poker, permainan slots, deposit slot pakai dana, poker terpercaya, games judi slot online, what do you think about (https://spencerenuy95296.aboutyoublog.com) together with play idn, situs casino, deposit judi, situs idn poker, casino online terbaik, and homepage about (https://fastandy.carrd.co/) for good measure. Check more @ Awesome Asian 2 Bet Tips (https://www.chuxia223.com/forum.php?mod=viewthread&tid=21024) 70b350c