| Bokul |
16.09.2006 19:07
Сообщение
#1
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Опишу, что мне надо:
надо, что бы при нажатию на комбинацию клавиш моя прога, которая раньше сидела в трее (можна даже без трея, просто чтобы она могла среагировать на нажатия клавиш. Вроде хук для этого надо ставить...), могла проанализировать код поточной Html страницы в браузере( Internet Explorer), вытянуть нужные ссылки, и скинуть в буфер обмена, реализованный в предыдущей теме . Трей и хуки можно оставить на потом, а сейчас же хотелося бы разобраться с браузером. Основная сложность это узнать Html. Я знаю, что все просматриваемое в браузерах сохраняется на винд, но определить, где он сохраняет все эти данные невозможно, так как Internet Explorer постоянно генерирует новые папки в Temporary Internet Files - система безопасности. Честно говоря, я просто не знаю куда тыкаться и что для этого надо знать. Может меня спасет WinApi? Покажите, пожалуйста, мне путь. Сообщение отредактировано: Bokul - 18.09.2006 7:41 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
![]() ![]() |
| Bokul |
16.09.2006 23:58
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата Запусти несколько окон IE (лучше - чтоб они были с разными страничками, для проверки работоспособности), и запусти это: Запустить, то я запустил, даже получил правильный результат, но разобраться во всем этом Как все это работает, понять одному мне, наверное, не под силам... Ух, вопросов выше крыши... Давайте по порядку: Что делает функция? Цитата function EnumIEChildProc(AHandle: hWnd; AnObject: TObject): BOOL; Цитата stdcall; А это нужно, чтобы потом можна было вызывать функцию, как параметр? Цитата GetClassName(AHandle, PChar(theClassName), 255); Тут мы, наверное, получаем класс окна... а вот какого окна и что такое клас для меня осталось загадкой... AHandle тоже константа? На что она указывает? Цитата if Pos('Edit', theClassName) > 0 then Что мы определяем с его помощю 'Edit'? Цитата SendMessage(AHandle, WM_GETTEXT, SizeOf(Text), Longint(@Text)); А эта функция и является основной, да? С ее помощью мы наверное и получаем адрес поточной страницы? Кому мы посылаем сообщения? Самому себе? WM_GETTEXT - неужели тоже константа? Даже в могущественном msdn не написано, какие другие значения могут быть на его месте. Longint знаю есть такой тип переменной, но чтобы функция... Ну а загадочный знак '@' ,вообще выше моего понимания. Цитата Я чуть попозже попробую, скажу что получилось Будем ждать. P.S Volvo, надеюсь у тебя хватет терпения, чтобы не послать меня подальше... Сообщение отредактировано: Bokul - 16.09.2006 23:59 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
| volvo |
17.09.2006 1:48
Сообщение
#3
|
|
Гость |
Цитата(Bokul @ 16.09.2006 23:58) Что делает функция? function EnumIEChildProc(AHandle: hWnd; AnObject: TObject): BOOL; Смотри... Есть в WinAPI такая функция: EnumChildWindows она получает одним из параметров так называемую CallBack функцию (функцию обратного вызова), и EnumIEChildProc как раз и подставляется как CallBack Function в эту самую EnumChildWindows... То же самое, кстати, и с EnumWindows ... Ей тоже нужна CallBack Function, и эту роль выполняет IEWindowEnumProc Цитата(Bokul @ 16.09.2006 23:58) А это нужно, чтобы потом можна было вызывать функцию, как параметр? Не совсем...Цитата(DRKB) Соглашения о вызовах Директива stdcall Параметры помещаются в стек слева направо. Очистка стека осуществляется вызываемой процедурой. Этот вызов обеспечивает обработку фиксированного числа параметров. Цитата(Bokul @ 16.09.2006 23:58) Тут мы, наверное, получаем класс окна... а вот какого окна и что такое клас для меня осталось загадкой... AHandle тоже константа? На что она указывает? Функции, начинающиеся с Enum... - функции перечисления, то есть действия свои они производят над ВСЕМИ объектами, являющимися ... Как бы это сказать, второй частью названия, что-ли... Если EnumWindows, то над всеми окнами, если EnumСhildWindows, то над всеми дочерними окнами, и т.д.А AHandle - это передаваемый системой в функцию перечисления Enum... хендл объекта, чтоб с ним (с объектом) можно было работать... Цитата(Bokul @ 16.09.2006 23:58) Что мы определяем с его помощю 'Edit'? Как что? Адресная строка Internet Explorer-а - не что иное, как Edit, и если в имени класса дочернего окна найден 'Edit', то все, забрать оттуда текст, это и будет адрес страницы, отображенной в данный момент в одной из копий IE...Цитата(Bokul @ 16.09.2006 23:58) А эта функция и является основной, да? С ее помощью мы наверное и получаем адрес поточной страницы? Кому мы посылаем сообщения? Самому себе? Это как раз та функция, которая реализует механизм отправки сообщения... Только почему же "самому себе"? Тому объекту, который имеет хендл AHandle... Мы же нашли, что в его имени класса есть Edit, то есть это - адресная строка... Цитата(Bokul @ 16.09.2006 23:58) WM_GETTEXT - неужели тоже константа? Даже в могущественном msdn не написано, какие другие значения могут быть на его месте. Цитата(Bokul @ 16.09.2006 23:58) Longint знаю есть такой тип переменной, но чтобы функция... А это не функция... Приведение типа... Все параметры должны быть строго того типа, который описан в заголовке, а ноль - он и как байт "ноль", и как Integer - "ноль", и как LongInt - тоже ноль... Вот и указывем, что ЭТОТ НОЛЬ - трактовать именно как имеющий тип LongInt...Цитата(Bokul @ 16.09.2006 23:58) Ну а загадочный знак '@' ,вообще выше моего понимания. Вроде, на все вопросы постарался ответить? Цитата Мне надо найти только поточное окно IE, а не все. Что в твоем понимании "поточное окно"? И откуда я знаю, какой у него заголовок... Найду через FindWindow, а это будет другое... И все, некорректная работа программы? |
Bokul Проект 16.09.2006 19:07
volvo Стой, стой...
Ты при нажатии клавиш хочешь получи... 16.09.2006 19:12
Bokul
Да!
Хотелось бы оставить это на потом, чтобы... 16.09.2006 19:15
volvo Ну, тогда...
FPC умеет работать с OLE? Умеет... В... 16.09.2006 20:14
Bokul Volvo,я конечно извиняюсь, но я ничего не понял :u... 16.09.2006 22:39
volvo То есть я могу работать со структурой Html страни... 16.09.2006 22:54
Bokul А, теперь я понял сам принцип, но только принцип -... 17.09.2006 1:45
Bokul Спасибо, volvo. Не знаю сколько пришлось бы перечи... 17.09.2006 2:15
volvo Вообще - это основной механизм обмена информацией ... 17.09.2006 8:32
volvo :blink: Проблемы пришли оттуда, откуда их меньше в... 17.09.2006 12:34
Bokul
Может я не понимаю полностью EnumWindows... Вот... 17.09.2006 18:20
volvo Bokul, сегодня явно не твой день :)
EnumWindows п... 17.09.2006 18:39
Bokul
Пошел стреляться :mega_chok: :)
Боюсь я ее. Па... 17.09.2006 18:55
Bokul А в Fpc возможно работать с реестром? 17.09.2006 20:04
volvo Через функции WinAPI - да, возможно...
см. в MSDN... 17.09.2006 20:43
Bokul Вот нашел в Drkb тему "Как добавить кнопку в ... 17.09.2006 21:41
volvo Я бы этого не делал... Понимаешь, в чем дело... Ре... 17.09.2006 23:01
Bokul
Спасибо, только у меня нету модуля ShellApi :ohmy... 17.09.2006 23:10
volvo :yes2:
Проверь в папке {FPC_PATH}\units... 17.09.2006 23:26
Bokul
Есть. Почему же не компилится? Ошибка: Can't ... 17.09.2006 23:33
volvo Есть. Почему же не компилится? Ошибка: Can't f... 18.09.2006 0:22
Bokul Ну наконец-то заработало!!!!
Пом... 18.09.2006 0:41
Bokul
Я и не думал, что все так быстро разберу..., а в... 18.09.2006 4:15
Bokul
Так, заметка: :rolleyes:
Вот только что перечиты... 18.09.2006 7:38
volvo
Я же тебе говорил, что OLE - очень мощная вещь? Д... 18.09.2006 8:31
Bokul
Ну как, теперь можно использовать DLL в моем пр... 18.09.2006 23:23
volvo Погоди пока... У меня появилась более интересная з... 18.09.2006 23:32
volvo А вот и идея (см. аттач, так это выглядит)... Если... 19.09.2006 14:16
Bokul
:good:
Конечно :yes2: . С чего начинать? 19.09.2006 22:53
Bokul
volvo, не мог бы ты выложить код, я попробую розо... 20.09.2006 23:21
volvo :no1: Я сделал проект на Дельфи, ты же хочешь попр... 20.09.2006 23:25
Bokul
Да - хотел бы. Неужеди FPC и Делфи так сильно отл... 20.09.2006 23:33
volvo Вот проект полностью...
Все, что надо добавить - ... 21.09.2006 0:14
Bokul Что то не получается, перетягиваю картинку слева о... 21.09.2006 0:42
volvo :blink: :blink: Когда перетягиваешь, курсор меняе... 21.09.2006 0:56
Bokul http://binmovie.ru/2006/09/19/poslednee_ka...ip__t... 21.09.2006 1:05
Bokul Так работает. :good: Спасибо.
Насколько сложно бу... 21.09.2006 1:52
volvo :no1: Это я тебе старый проект выслал... Вот этот ... 21.09.2006 1:43
volvo ЭТО - невозможно... Там же OLE+COM чистой воды...
... 21.09.2006 1:55
Bokul
:cray:
А через Dll нельзя? :unsure: 21.09.2006 1:59
volvo Ну, и зачем тебе это? Искусство ради искусства? Во... 21.09.2006 7:59
Bokul Жалко... Но всеравно, еще раз большое спасибо за п... 22.09.2006 1:15![]() ![]() |
|
Текстовая версия | 9.12.2025 23:31 |