Сейчас на форуме: asfa, _MBK_, Adler, bartolomeo (+9 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› SysListView32 - вытащить данные |
Посл.ответ | Сообщение |
|
Создано: 23 июня 2011 21:06 · Личное сообщение · #1 Нужно вытащить данные из SysListView32 (Levels) вот этой проги (выделенный сервер мода для игры AVP2) Через винапи возвращается текст, но индекс картинки всегда равен нулю, поэтому полученные данные неполные. З.Ы. На всякий случай прилагаю исходники оригинального выделенного сервера ![]() |
|
Создано: 23 июня 2011 21:24 · Личное сообщение · #2 |
|
Создано: 23 июня 2011 21:36 · Личное сообщение · #3 |
|
Создано: 23 июня 2011 22:03 · Личное сообщение · #4 |
|
Создано: 23 июня 2011 22:39 · Поправил: codevx · Личное сообщение · #5 Расплывчато объяснил, пардон задача: собирать статистику об игроках/уровне на котором крутится сервер. как: читать содержимое SysListView32 (Players и Levels) Через предложенные проги, информация собирается не полностью. Нет информации об индексе иконки, что важно. Писал собственную програмулину, через винапи собирающую инфу с листов. Текст из столбцов собирается прекрасно. Индекс иконки - всегда равен нулю, что странно, т.к. иконки разные. ![]() |
|
Создано: 24 июня 2011 00:02 · Личное сообщение · #6 |
|
Создано: 24 июня 2011 13:01 · Личное сообщение · #7 |
|
Создано: 21 сентября 2012 11:47 · Личное сообщение · #8 и у меня вопрос! есть эксплорерное окошко с выбором сертификатов. для того чтобы выбрать какой-то пункт в этом меню, сначала нужно узнать номер его расположения. для этого читаем содержимое и сравниваем с тем, который надо выбрать. допустим нашелся под номером 2, запускаем код селекта, после запускаем нажатию ентера так сказать. и возникла проблема - происходит двойной селект в том окне. я так полагаю это из-за торможения появления окна, то есть сначала окно появилось, тут моя программа начинает читать содержимое, находит под номером 2 нужный селект, производит селект 2 пункта, но тут окно доинициализировалось и эксплорер производит начальный селект на самый первый итем. в результате выглядит так: ![]() в чем секрет работы с этим типом окна? почему пауза срабатывает не там где надо? есть ли какие-то win api, которое звучит так: "а не с инициировалось ли окно?", то есть "готово ли окно принять мою команду?", и что-то типа такого "а выполнена ли моя команда?". сам запуск команды типа SendMessage еще можно отследить по возвращаемому коду - но это как бы сообщает о том, что команда выслана, а вот как можно определить "а исполнена ли команда?". State.LVITEM State\mask = #LVIF_STATE State\state = #LVIS_SELECTED | #LVIS_FOCUSED State\stateMask = #LVIS_SELECTED | #LVIS_FOCUSED SendMessage_(windowhandle, #LVM_SETITEMSTATE, toselectnumberitem, @State) ![]() |
|
Создано: 21 сентября 2012 14:52 · Поправил: SeregaZ · Личное сообщение · #9 |
|
Создано: 21 сентября 2012 22:01 · Личное сообщение · #10 SeregaZ пишет: есть ли какие-то win api, которое звучит так: "а не с инициировалось ли окно?" Не? ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 21 сентября 2012 22:56 · Поправил: SeregaZ · Личное сообщение · #11 так. попытаюсь объяснить что я понял из буржуйского описания: 1. запускаю эксплорер 2. запускаю эту команду она по сути тормозит выполнение моей программы и ждет пока эксплорер вернет сообщение что "я готов"? 3. посылаю команду на чтение той таблицы 4. опять запускаю эту команду на ожидание. верно? *** так. что-то нифига... пишет неверный дескриптор. и хендл процесса сувал, и хендл окна... не хочет ![]() *** ага. ему нужно сувать, тем что OpenProcess командой возвращается? в этом случае ошибку не выдал. пойду попробую поприменять там сям в коде. чему равна INFINITE или как правильно указать? -1? *** походу ничего она не ждет... эксплорер запустил, а она мне уже возвращает 0, что дескать эксплорер готов, а страничка то еще не догрузилась. тоже самое по отправке моего сообщения на селект. ![]() |
|
Создано: 21 сентября 2012 23:26 · Поправил: plutos · Личное сообщение · #12 чему равна INFINITE или как правильно указать? -1? INFINITE is a predefined constant: #DEFINE INFINITE 0xFFFFFFFF Вместо того, чтобы каждые 5 минут делиться впечатлениями и что-то там куда-то наобум "сувать" попробуй все же разобраться сам! Посмотри вот тут, может поможет: http://www.foxite.com/search.aspx?m=tags&q=RunAndWait http://comsci.liu.edu/~murali/win32/WaitFunctions.htm И еще, нет такого понятия API "комманда", есть API FUNCTION, которую мы вызываем. ----- Give me a HANDLE and I will move the Earth. ![]() |
|
Создано: 21 сентября 2012 23:52 · Поправил: SeregaZ · Личное сообщение · #13 по первой ссылке мне предложили сходить проверится... по второй малость не подходит: Code:
по замыслу должен был происходить селект четырех элементов в форме по очереди. однако ничего... зато если убрать WaitForSingleObject_(proc, 1000), сразу все 4 итема выбраны. хотя форма поддерживает только одиночный селект так сказать... *** правильный ответ оказался у алексея: там правда в коде одна или две мелкие ошибки... но в целом картину отображает верно ![]() ![]() |
|
Создано: 22 сентября 2012 00:48 · Поправил: plutos · Личное сообщение · #14 |
![]() |
eXeL@B —› Вопросы новичков —› SysListView32 - вытащить данные |