Страница: 1 |
Страница: 1 |
Вопрос: Хитрое получение хэндла элемента окна
Добавлено: 06.11.05 14:26
Автор вопроса: xa0c | ICQ: 993606
Опять же subj.
Всё было бы просто, еслиб в окне не было Tab'ов(закладок).
Объясняю ситуацию: Есть прога, в которой есть editbox на одном из Tab'ов, куда я хочу вставить свои данные. Однако, поиск по названию проги(title) выдаст хэндл главного окна, а мне нужен хендл одной из закладок, т.к. едитбокс находится там и SetDlgItemText требует хендл этой закладки... (ну или хэндл сомого editbox'a, если использовать другую функцию)
Заметил одну особенность... Если попробовать проиндексировать все элементы через EnumChildWindows, то индексируются только элементы на тех закладках, на которые щелкали. Т.е. если никуда не щелкать - проиндексирует элементы только первой закладки, если щелкнуть на третью закладку, то проиндексирует элементы на первой и третьей, если щелкнуть потОм на 4ую закладку, то проиндексирует 1ю, 3ю, и 4ю.... Вот... х_Х
P.S. Прога, над которой я провожу эксперименты, наверное, будет многим известна... DirectVobSub...
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
xa0c
ICQ: 993606
Вопросов: 7
Ответов: 28
Профиль | | #1
Добавлено: 06.11.05 19:04
Понаблюдав за прогой я заметил, что этот параметр она записывает в реестр и при каждом запуске считывает. Однако, в дальнейшем, при каждой активации проги она перестает считывать его из реестра, а наоборот, только записывает в него то, что находится в editbox'e.
Вот, собсно, подумалось - а может быть найти это значение в памяти и изменить его там, чем искать хэндлы?..
Только вот трабла - я абсолютно не в курсе как искать и редактировать значения в памяти. Буду благодарен за любые линки/примеры или же просто названия функций...
Номер ответа: 2
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #2
Добавлено: 06.11.05 21:12
Я так понял ты хочешь найти этот editbox, считать его значение, найти это значене в памяти и переписать его? Если так, то вот последовательность функций которые тебе нужны:
FindWindow
FindWindowEx
SendMessage
ReadProcessMemory
WriteProcessMemory
Номер ответа: 3
Автор ответа:
xa0c
ICQ: 993606
Вопросов: 7
Ответов: 28
Профиль | | #3
Добавлено: 06.11.05 22:17
Да не, я уже подумал, что такой способ не есть хорошо.
VobSub - это фильтр, dll'ka. Придется еще дополнительно вызывать его окно настроек, которое может вылезти поверх других или еще как-либо неудачно. В общем, идею с хендлом я решил оставить.
ИМХО, нужно редактировать значение в памяти. Если как записАть/считать значения в памяти я понял (WriteProcessMemory/ReadProcessMemory), то как найти этот адрес, в котором значение хранится - нет... =(