![]() |
Модераторы: diadiavova, gambit |
![]() ![]() ![]() |
|
Pilger |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 10.5.2008 Где: Германия Репутация: нет Всего: нет |
Здравствуйте!
Имеется чужая программа с ListBox'ом на ней. Требуется получить из этого ListBox'а текст под последним заполненным индексом (в другой программе). Количество элементов в ListBox'е я нашел:
Длину нужного индекса тоже:
Вопрос: Как теперь достать текст из нужного мне индекса? Я смотрел, как это делается на C++, но тут что то не сходится. Куда он должен сохранять значение и как его получить, если функция возвращает Integer? Заранее спасибо. -------------------- Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert. |
||||
|
|||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 1 Всего: 67 |
Pilger, LB_GETTEXT ...
в lParam индекс строки, в wParam передаётся указатель на буфер, в который запишется текст... если я не ошибаюсь там какието грабли с записью в буфер...тоесть память под строку надо выделять в адресном пространстве процесса, в котором находится листбокс...и читать соответственно тоже оттуда придётся... -------------------- СУВ, Partizan. |
|||
|
||||
Pilger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 10.5.2008 Где: Германия Репутация: нет Всего: нет |
Большое спасибо за наводку. Будем рыть в этом направлении.
-------------------- Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert. |
|||
|
||||
DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
Partizan,
точнее, так: wParam - index lParam - pointer on buffer никаких граблей не должно быть, просто нужно буфер символов увеличить этак на 4 : ![]() Простите непомню как на VB.NET ![]()
|
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 1 Всего: 67 |
DarkDragon, если выделить память в одном процессе и передать указатель в другой процесс, то грабли будут гарантированно, т.к. каждый процесс имеет своё собственное адресное пространство.
-------------------- СУВ, Partizan. |
|||
|
||||
DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
Да не в этом дела. Когда вы посылаете LB_GETTEXT, то возвращается не указатель, а берется указатель переданный в lparam и копируется строка туда(т. е. в ваш процесс). Не верите? проверьте сами! Присоединённый файл ( Кол-во скачиваний: 10 ) ![]() |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 1 Всего: 67 |
DarkDragon, у меня лично были такие грабли с чтением текста из статусбара стороннего процесса...
-------------------- СУВ, Partizan. |
|||
|
||||
DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: 5 Всего: 8 |
Дело в том что правильно организованные данные и передача аргументов решает практически все проблемы. Насколько я помню грабли могут появиться в работе с буфером обмена (Clipboard) там требуется глобальное выделение памяти, а иначе можно получить костыли. Еще могу советовать почаще заглядывать в MSDN, т. к. если есть какие-то нюансы, Microsoft добропорядочно описывает их (конечно в MSDN не найдешь недокументированных возможностей, но кто мешает использовать DDK?)
![]() Ну вот окончательно попробуйте вот это:
Должно сработать ![]() Это сообщение отредактировал(а) DarkDragon - 18.7.2008, 20:07 |
|||
|
||||
Pilger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 10.5.2008 Где: Германия Репутация: нет Всего: нет |
Большое спасибо! Все получилось. (как раз вернулся из отпуска) Решение на VB Net.
Большое спасибо за помощь. Я не могу повысить вам репутацию, к сожалению. Если можно, то повысьте пожалуйста от моего имени. Это сообщение отредактировал(а) Pilger - 19.7.2008, 18:42 -------------------- Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert. |
|||
|
||||
![]() ![]() ![]() |
Правила форума VB .NET | |
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |