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

> Проект, FreePascal
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


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


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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, то есть это - адресная строка... 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 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   Запустить, то я запустил, даже получил правильны...   16.09.2006 23:58
volvo   Что делает функция? [code=pas]function EnumIEChild...   17.09.2006 1:48
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


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

 



- Текстовая версия 28.07.2025 22:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"