Получение элементов ListView

Тема в разделе "WASM.WIN32", создана пользователем mix_mix, 4 июл 2006.

  1. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Пытаюсь сохранить содержимое ListView в виде html-отчета. Вся беда в том, что ListView принадлежит другому процессу.
    Когда я посылаю сообщение LVM_GETITEMTEXT, в lParam номер итема, а в wParam указатель на структуру, в которой есть поле содержащее адрес строки, куда нужно писать текст. Только эта строка, получается, находится в адресном простанстве другого процесса, в подопытной программе возникает исключение и она вылетает. Пробовал выделять память в том процессе через VirtualAllocEx, но все равно вылетает с ошибкой :dntknw: Есть ли какие-то методы, кроме инжекта кода в процесс, позволяющие осуществить задуманное?
     
  2. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Хотя че-то я сглупил. Ведь сообщения используютя для передачи данных между процессами. Тогда вопрос мемного меняется: как нужно правильно получать элементы ListView (через LVM_GETITEMTEXT или LVM_GETITEM, мне все равно), хотя все-таки непонятно, почему подопытные проги вылетают.
     
  3. electron

    electron New Member

    Публикаций:
    0
    Регистрация:
    26 май 2005
    Сообщения:
    32
    какие параметры ты заполняешь в структуре LVITEM?
    если я не ошибаюсь должно быть что-то вроде:
    //-----------------------------
    LVITEM lv;
    char szText[1024];
    ZeroMemory(&lv,sizoeof(LVITEM));
    lv.mask = LVIF_TEXT;
    lv.pszText = szText;
    lv.cchMaxText = 1024;
    lv.iItem = 0;
    lv.iSubItem = 0;
    SendMessage(hList,LVM_GETITEMTEXT,0,(LPARAM)&lv);
    //-------------------------------
    Если не пробовал,то попробуй макрос ListView_GetItemText
     
  4. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Прям диалого сам собой получается (даже не знаю какой смайлик поставить).
    Короче до всего сам дошел, сделал, если кому-то надо - пользуйтесь.
    Пока еще на стадии разработки, поэтому о законченности программы и ее оптимизированности нету и мысли.
     
  5. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    О, electron обогнал меня, с диалогом "сам с собой" поторопился.
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Была уже такая тема. И рабочий пример я в ней выкладывал.

    2 electron:
    Фокус не пройдёт, т.к. окно в другом процессе. См. обьяснение выше.
     
  7. electron

    electron New Member

    Публикаций:
    0
    Регистрация:
    26 май 2005
    Сообщения:
    32
    2Quantum:
    я расчитывал на локальное использование.А через VirtualAllocEx это вполне возможно.....
     
  8. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    Есть такой код:
    http://ru.livecode.org/index.php/Как_получить_handle_для_элементов_ListView_чужого_процесса