Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: hw.t-k.ru
 Профиль | | #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
Option Explicit
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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #14
Добавлено: 08.04.05 10:10
можно, имхо...

Ответить

Номер ответа: 15
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #15 Добавлено: 08.04.05 11:28
Да конечно можно - см. выше ссылку на vbforums.com. ZagZag, ты явно напрашиваешься на то, чтобы тебе написАли готовый код...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам