IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Проект, FreePascal
сообщение
Сообщение #1


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Опишу, что мне надо:
надо, что бы при нажатию на комбинацию клавиш моя прога, которая раньше сидела в трее (можна даже без трея, просто чтобы она могла среагировать на нажатия клавиш. Вроде хук для этого надо ставить...), могла проанализировать код поточной Html страницы в браузере( Internet Explorer), вытянуть нужные ссылки, и скинуть в буфер обмена, реализованный в предыдущей теме . Трей и хуки можно оставить на потом, а сейчас же хотелося бы разобраться с браузером. Основная сложность это узнать Html. Я знаю, что все просматриваемое в браузерах сохраняется на винд, но определить, где он сохраняет все эти данные невозможно, так как Internet Explorer постоянно генерирует новые папки в Temporary Internet Files - система безопасности.
Честно говоря, я просто не знаю куда тыкаться и что для этого надо знать. Может меня спасет WinApi? Покажите, пожалуйста, мне путь.

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
Запусти несколько окон IE (лучше - чтоб они были с разными страничками, для проверки работоспособности), и запусти это:


Запустить, то я запустил, даже получил правильный результат, но разобраться во всем этом wacko.gif .
Как все это работает, понять одному мне, наверное, не под силам...
Ух, вопросов выше крыши... Давайте по порядку:
Что делает функция?
Цитата
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, надеюсь у тебя хватет терпения, чтобы не послать меня подальше... rolleyes.gif

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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, то есть это - адресная строка... smile.gif

Цитата(Bokul @ 16.09.2006 23:58)
WM_GETTEXT - неужели тоже константа? Даже в могущественном msdn не написано, какие другие значения могут быть на его месте.
yes2.gif Тоже константа... Одна из нескольких тысяч... Я же говорил, что в MSDN все равно придется лазить, что ты ответил? smile.gif

Цитата(Bokul @ 16.09.2006 23:58)
Longint знаю есть такой тип переменной, но чтобы функция...
А это не функция... Приведение типа... Все параметры должны быть строго того типа, который описан в заголовке, а ноль - он и как байт "ноль", и как Integer - "ноль", и как LongInt - тоже ноль... Вот и указывем, что ЭТОТ НОЛЬ - трактовать именно как имеющий тип LongInt...

Цитата(Bokul @ 16.09.2006 23:58)
Ну а загадочный знак '@' ,вообще выше моего понимания.
blink.gif Операция взятия адреса?

Вроде, на все вопросы постарался ответить? smile.gif

Цитата
Мне надо найти только поточное окно IE, а не все.
Что в твоем понимании "поточное окно"? И откуда я знаю, какой у него заголовок... Найду через FindWindow, а это будет другое... И все, некорректная работа программы? nea.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Bokul   Проект   16.09.2006 23:07
volvo   Стой, стой... Ты при нажатии клавиш хочешь получи…   16.09.2006 23:12
Bokul   Да! Хотелось бы оставить это на потом, чтобы…   16.09.2006 23:15
volvo   Ну, тогда... FPC умеет работать с OLE? Умеет... В…   17.09.2006 0:14
Bokul   Volvo,я конечно извиняюсь, но я ничего не понял :u…   17.09.2006 2:39
volvo   То есть я могу работать со структурой Html страни…   17.09.2006 2:54
Bokul   Запустить, то я запустил, даже получил правильны…   17.09.2006 3:58
volvo   Что делает функция? [code=pas]function EnumIEChild…   17.09.2006 5:48
Bokul   А, теперь я понял сам принцип, но только принцип -…   17.09.2006 5:45
Bokul   Спасибо, volvo. Не знаю сколько пришлось бы перечи…   17.09.2006 6:15
volvo   Вообще - это основной механизм обмена информацией …   17.09.2006 12:32
volvo   :blink: Проблемы пришли оттуда, откуда их меньше в…   17.09.2006 16:34
Bokul   Может я не понимаю полностью EnumWindows... Вот…   17.09.2006 22:20
volvo   Bokul, сегодня явно не твой день :) EnumWindows п…   17.09.2006 22:39
Bokul   Пошел стреляться :mega_chok: :) Боюсь я ее. Па…   17.09.2006 22:55
Bokul   А в Fpc возможно работать с реестром?   18.09.2006 0:04
volvo   Через функции WinAPI - да, возможно... см. в MSDN…   18.09.2006 0:43
Bokul   Вот нашел в Drkb тему "Как добавить кнопку в …   18.09.2006 1:41
volvo   Я бы этого не делал... Понимаешь, в чем дело... Ре…   18.09.2006 3:01
Bokul   Спасибо, только у меня нету модуля ShellApi :ohmy…   18.09.2006 3:10
volvo   :yes2: Проверь в папке {FPC_PATH}\units…   18.09.2006 3:26
Bokul   Есть. Почему же не компилится? Ошибка: Can't …   18.09.2006 3:33
volvo   Есть. Почему же не компилится? Ошибка: Can't f…   18.09.2006 4:22
Bokul   Ну наконец-то заработало!!!! Пом…   18.09.2006 4:41
Bokul   Я и не думал, что все так быстро разберу..., а в…   18.09.2006 8:15
Bokul   Так, заметка: :rolleyes: Вот только что перечиты…   18.09.2006 11:38
volvo   Я же тебе говорил, что OLE - очень мощная вещь? Д…   18.09.2006 12:31
Bokul   Ну как, теперь можно использовать DLL в моем пр…   19.09.2006 3:23
volvo   Погоди пока... У меня появилась более интересная з…   19.09.2006 3:32
volvo   А вот и идея (см. аттач, так это выглядит)... Если…   19.09.2006 18:16
Bokul   :good: Конечно :yes2: . С чего начинать?   20.09.2006 2:53
Bokul   volvo, не мог бы ты выложить код, я попробую розо…   21.09.2006 3:21
volvo   :no1: Я сделал проект на Дельфи, ты же хочешь попр…   21.09.2006 3:25
Bokul   Да - хотел бы. Неужеди FPC и Делфи так сильно отл…   21.09.2006 3:33
volvo   Вот проект полностью... Все, что надо добавить - …   21.09.2006 4:14
Bokul   Что то не получается, перетягиваю картинку слева о…   21.09.2006 4:42
volvo   :blink: :blink: Когда перетягиваешь, курсор меняе…   21.09.2006 4:56
Bokul   http://binmovie.ru/2006/09/19/poslednee_ka...ip__t…   21.09.2006 5:05
Bokul   Так работает. :good: Спасибо. Насколько сложно бу…   21.09.2006 5:52
volvo   :no1: Это я тебе старый проект выслал... Вот этот …   21.09.2006 5:43
volvo   ЭТО - невозможно... Там же OLE+COM чистой воды... …   21.09.2006 5:55
Bokul   :cray: А через Dll нельзя? :unsure:   21.09.2006 5:59
volvo   Ну, и зачем тебе это? Искусство ради искусства? Во…   21.09.2006 11:59
Bokul   Жалко... Но всеравно, еще раз большое спасибо за п…   22.09.2006 5:15


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.04.2024 12:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name