Перейти к содержанию
  • Регистрация
  • 0
neo

отличить GetClassName в браузере

Вопрос

Всем привет!

Народ такая вот задача... нужно как-то отличать ClassName в браузерах...
то есть надо отличать адресную строку от основного бокса браузера...

проблема в том что ИмяКласса в них одинаковое... или я просто как-то неправильно его получаю...

вот пример
 

DelphiВыделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function GetCN(Handle: THandle): String;
var
Buffer: array[0..MAX_PATH] of Char;
begin
GetClassName(Handle, @Buffer, MAX_PATH);
Result := String(Buffer);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
 xFocus: HWND;
begin
  AttachThreadInput(GetCurrentThreadID,GetWindowThreadProcessId(GetForegroundWindow,nil),True);
  xFocus:=GetFocus;
  AttachThreadInput(GetCurrentThreadID,GetWindowThreadProcessId(GetForeGroundWindow,nil),False);
 
  Edit1.Text:=GetCN(xfocus);
end;

 

 

 

Проблема в том что например в Хроме везде написано Chrome_WidgetWin_1
в фаерфоксе MozillaWindowClass итд

Изменено пользователем neo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Где-то когда-то я читал что хром рендерит окно аналогично 3Д играм.
Т.е. он сам занимается отрисовкой всего своего содержимого, и не использует окна-компоненты в VCL-ном понимании.
Аналогично и другие браузеры на основе хромиума.

Костыльное решение - предполагать что окно ввода url (omnibox, если я не ошибаюсь) находится на ххх пикселей ниже верхнего края окна и на ууу пикселей правее левого края окна.
Кликаете программно в эту часть мышкой чтобы оно сфокусировалось, и шлете туда все что нужно.
Прочитать текст из него как мне кажется - не получится, по крайней мере мне не известны способы.
Возможно есть какойе-то АПИ от гугла, я не в теме, попробуйте поискать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
9 часов назад, Barbanel сказал:

Где-то когда-то я читал что хром рендерит окно аналогично 3Д играм.
Т.е. он сам занимается отрисовкой всего своего содержимого, и не использует окна-компоненты в VCL-ном понимании.
Аналогично и другие браузеры на основе хромиума.

Костыльное решение - предполагать что окно ввода url (omnibox, если я не ошибаюсь) находится на ххх пикселей ниже верхнего края окна и на ууу пикселей правее левого края окна.
Кликаете программно в эту часть мышкой чтобы оно сфокусировалось, и шлете туда все что нужно.
Прочитать текст из него как мне кажется - не получится, по крайней мере мне не известны способы.
Возможно есть какойе-то АПИ от гугла, я не в теме, попробуйте поискать.

Так окей тогда 2 вопроса назрело...

1) кто-нибудь знает с кем можно поговорить о браузерном API и об omnibox... может тут есть специалисты?

2) подскажите можно ли как то сразу узнать позицию курсора в чужом окне? или надо узнавать координаты окна и его позицию и далее уже высчитывать в зависимости от позиции курсора на десктопе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, neo сказал:

 

1) кто-нибудь знает с кем можно поговорить о браузерном API и об omnibox... может тут есть специалисты? 

 

Для этого есть CEF. Хотите внедрить Хром в свой браузер - используйте CEF. А не работу с окнами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...