Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 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-сайт: hunger.ru
 Профиль | | #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), то как найти этот адрес, в котором значение хранится - нет... =(

Ответить

Страница: 1 |

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



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