Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2008, 15:57   #11
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Значит надо через EnumWindows и EnumChildWindows пройти по окнам, беря через GetWindowText их "содержимое" и выясняя что в нём обычными строковыми функциями..
А можно кодом это все?
Иллидан вне форума Ответить с цитированием
Старый 03.03.2008, 16:03   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если в окне в любом месте содержится например слово "Air" , то получить его handle
Чессловоэто не так просто и через EnumXXX вероятность всего лиш 40%, ибо представь что слово это не в "окне" а на канве нарисовано.

90% дает поиск в памяти процесса (как это делает АртМани).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.03.2008, 14:30   #13
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

В памяти процесса это как? A можно какой-нибудь пример, как это можно осуществить?
Иллидан вне форума Ответить с цитированием
Старый 04.03.2008, 15:07   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ищи примеры с ReadProcessMemory
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.03.2008, 15:28   #15
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Пример пропатчивания процесса на моей страничке http://nemecsx.narod.ru/MemPatcher.rar

Вас интересует именно:
Код:
GetWindowThreadProcessId(WinSwupWND, dwProcessID);
hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, dwProcessID);

while (Adress < $FFFFFFFF) do 
begin
  if VirtualQueryEx(hProcess, Pointer(Adress), MBI, SIZEOF(MBI)) <> SIZEOF(MBI) then break;
  if (MBI.State = MEM_COMMIT) then
  begin
   dPosition := DWORD(MBI.BaseAddress);
   for i:= 1 to (MBI.RegionSize div 512) do
   begin
     GetMem(lpBuffer, BufferSize);
     if ReadProcessMemory(hProcess, Pointer(dPosition), lpBuffer, BufferSize, lpNumberOfBytes) then
     begin 
     end;
   end;
  end;
  Adress := DWORD(MBI.BaseAddress) + MBI.RegionSize;
end;
вроде описал... значения все посмотрите в коде
BOBAH13 вне форума Ответить с цитированием
Старый 05.03.2008, 13:51   #16
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

А можно какое-нибудь описание, что делает код вообще?
Иллидан вне форума Ответить с цитированием
Старый 05.03.2008, 21:06   #17
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну главное вам поможет MSDN тут только api. Да и про значение слова патч и процесс данного слова пропатчевание ( или как то еще ) почитайте в интернете. Ну а из прочитанного буфера ( взять например ..of CHAR) вы можете выделить слова которые нужны... тем же AnsiPos ( кажется ) вообщем незачто
BOBAH13 вне форума Ответить с цитированием
Старый 05.03.2008, 21:12   #18
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

2 BOBAH13
Только Вы уж больно адрес крутой завернули - FFFFFFFF. Ядро патчить будете?
B_N вне форума Ответить с цитированием
Старый 07.03.2008, 14:52   #19
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Господа, у меня другая идея: хочу просто программно запустить стандартный поиск слова в меню окна. У меня такие вопросы:
1) необходимо найти меню окна и определить, содержится ли там заданный пункт?
2) необходимо проверить, удачный ли был результат поиска?
Как это осуществить?
Иллидан вне форума Ответить с цитированием
Старый 07.03.2008, 15:20   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
необходимо найти меню окна
GetMenu
Цитата:
определить, содержится ли там заданный пункт
GetSubMenu в цикле
Цитата:
необходимо проверить, удачный ли был результат поиска
Как ни банально но If )))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск слова в таблице (datagridview) kommunist Общие вопросы .NET 4 11.04.2010 20:38
Поиск слова в поле типа МЕМО БД PARADOX KAZAKH БД в Delphi 2 05.06.2008 07:22
Поиск 'Слова' JakSon Работа с сетью в Delphi 1 20.04.2008 00:13
кнопки в окне mahsus Общие вопросы .NET 0 29.02.2008 12:42