Страница: 1 | 2 |
Вопрос: Сохранить ListView зная его hWnd
Добавлено: 01.04.05 04:38
Автор вопроса: ZagZag | ICQ: 295002202
Собственно сабж все говорит. Ответте пожалуйста поскорее. Очень даже
желательно чтобы кодом - я не знаю какие константы посылать и как получать
значения.
Известно что в ЛистВиеве два поля, сохранить нужно только первое
Ответы
Всего ответов: 26
Номер ответа: 1
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #1
Добавлено: 01.04.05 07:38
Дело в том что есть программка-демка, она запрещает сохранять этот список.
Ну и что я из-за такой мелочи деньги тратить буду?
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 01.04.05 09:41
см. cListView.cls в примерах... ApiListView кажись зовется...
Номер ответа: 3
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #3
Добавлено: 01.04.05 13:19
Нет времени писАть код, но идея такая:
Лезешь в МСДН и смотришь все сообщения для чтения данных из листвью. Тебе нужны: (а) определение числа записей в листвью, и (б) определение айтема листвью (как ты его называешь - "первого поля". Есть надежда, что сообщение (б) есть в варианте получения просто ТЕКСТА айтема, а не всей его структуры (LVITEM). Если есть, то скорее всего lParam будет равен номеру записи, а wParam - переданной через ByVal буферной строке, ну или что-то в этом роде; короче - примерно как для WM_GETTEXT. Пишешь цикл с единственной АПИшкой SendMessage - и получаешь текст всех элементов. Если же данные об айтеме можно выдернуть только через структуру, то т.к. листвью у тебя "чужой", то придётся пошаманить с WriteProcessMemory и VirtualAllocEx, что кстати автоматом накладывает ограничение на версию ОС (NT-based only). На РЕЛИБе был отличный пример от Messir по чтению "чужого" TreeView - поищи там по VB-шному форуму.
Номер ответа: 4
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #4
Добавлено: 01.04.05 13:39
Вот, нашёл в закладках:
http://www.relib.com/forums/topic.asp?id=804336
Номер ответа: 5
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #5
Добавлено: 01.04.05 17:22
Вот еще ссылочка с кодом:
http://www.vbforums.com/showthread.php?s=fb1fe57d4f386a3b29e69fe7ded9beb0&threadid=184384
Номер ответа: 6
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #6
Добавлено: 05.04.05 06:48
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long
Private Type LVITEM
mask As Long
iItem As Long
iSubItem As Long
state As Long
stateMask As Long
pszText As String
cchTextMax As Long
iImage As Long
lParam As Long
End Type
Private Const LVM_FIRST = &H1000
'Private Const LVM_GETITEMCOUNT = (LVM_FIRST + 4)
Private Const LVM_GETITEMTEXT = (LVM_FIRST + 45)
Private Const LVIF_TEXT As Long = &H1
Private Sub Command1_Click()
'Dim NumBuddies As Long
Dim lv As LVITEM
Dim MyText As String
Dim MySize As Long
Dim hListView As Long
hListView = &H270476
' NumBuddies = SendMessage(hListView, LVM_GETITEMCOUNT, 0, 0)
lv.mask = LVIF_TEXT
lv.iItem = 1
lv.cchTextMax = Len(MyText)
lv.pszText = MyText
MySize = SendMessage(hListView, LVM_GETITEMTEXT, ByVal 1, ByVal lv)
MsgBox MyText
End Sub
Что же здесь не так? Выдает пустую строку
Хотя по тому же hListView честно получает количество строк
Номер ответа: 7
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #7
Добавлено: 05.04.05 06:54
Листвью из чужого процесса, ты не имеешь доступа к памяти этого процесса. Таким способом можно считать данные только из совсем старых контролов
Номер ответа: 8
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #8
Добавлено: 05.04.05 07:38
Да? А получить количество записей значит разрешено?
Всеравно есть спопоб... только я его нез наю
Может просто я неверно перенаписал код...
Номер ответа: 9
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #9
Добавлено: 05.04.05 08:56
Ну перепиши ещё раз ...
Номер ответа: 10
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #10
Добавлено: 05.04.05 12:41
2ZagZag:
cresta абсолютно прав:
Сходил бы что ль на ссылки, которые я тебе кинул... там это ясно видно...
Номер ответа: 11
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #11
Добавлено: 06.04.05 03:08
Ах если бы я по англицки также бегло читать умел...
Чтоже сохранять и распознавать содрежимое как рисунок?!
Неужели способа вообще никакого нет. К другим-то элементам получают доступ,
например TextBox (Edit)?
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 06.04.05 11:04
ZagZag, ты меня поражаешь своей настойчивостью в непонимании и упорством...
Где-то тебе говорят что контролы маст дай, юзай на АПИ что все уже написано до тебя, ты спрашиваешь, мол что мне все на АПИ писать много времени уйдет...
То теперь тебе уже все разжевали, и примероов надовали, а ты с наивным видом ниче непонимающего продолжаешь настаивать на ответе
Номер ответа: 13
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #13
Добавлено: 08.04.05 07:48
Ну объясните же мне-тупому, можно это сделать или нет.
А если и нет, то зачем же столько шума?
Номер ответа: 14
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #14
Добавлено: 08.04.05 10:10
можно, имхо...
Номер ответа: 15
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #15
Добавлено: 08.04.05 11:28
Да конечно можно - см. выше ссылку на vbforums.com. ZagZag, ты явно напрашиваешься на то, чтобы тебе написАли готовый код...