neo Опубликовано 30 июля, 2019 Поделиться Опубликовано 30 июля, 2019 (изменено) Всем привет! Народ такая вот задача... нужно как-то отличать 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 итд Изменено 30 июля, 2019 пользователем neo Цитата Ссылка на комментарий
0 Barbanel Опубликовано 31 июля, 2019 Поделиться Опубликовано 31 июля, 2019 Где-то когда-то я читал что хром рендерит окно аналогично 3Д играм. Т.е. он сам занимается отрисовкой всего своего содержимого, и не использует окна-компоненты в VCL-ном понимании. Аналогично и другие браузеры на основе хромиума. Костыльное решение - предполагать что окно ввода url (omnibox, если я не ошибаюсь) находится на ххх пикселей ниже верхнего края окна и на ууу пикселей правее левого края окна. Кликаете программно в эту часть мышкой чтобы оно сфокусировалось, и шлете туда все что нужно. Прочитать текст из него как мне кажется - не получится, по крайней мере мне не известны способы. Возможно есть какойе-то АПИ от гугла, я не в теме, попробуйте поискать. Цитата Ссылка на комментарий
0 neo Опубликовано 31 июля, 2019 Автор Поделиться Опубликовано 31 июля, 2019 9 часов назад, Barbanel сказал: Где-то когда-то я читал что хром рендерит окно аналогично 3Д играм. Т.е. он сам занимается отрисовкой всего своего содержимого, и не использует окна-компоненты в VCL-ном понимании. Аналогично и другие браузеры на основе хромиума. Костыльное решение - предполагать что окно ввода url (omnibox, если я не ошибаюсь) находится на ххх пикселей ниже верхнего края окна и на ууу пикселей правее левого края окна. Кликаете программно в эту часть мышкой чтобы оно сфокусировалось, и шлете туда все что нужно. Прочитать текст из него как мне кажется - не получится, по крайней мере мне не известны способы. Возможно есть какойе-то АПИ от гугла, я не в теме, попробуйте поискать. Так окей тогда 2 вопроса назрело... 1) кто-нибудь знает с кем можно поговорить о браузерном API и об omnibox... может тут есть специалисты? 2) подскажите можно ли как то сразу узнать позицию курсора в чужом окне? или надо узнавать координаты окна и его позицию и далее уже высчитывать в зависимости от позиции курсора на десктопе? Цитата Ссылка на комментарий
0 qz5 Опубликовано 1 августа, 2019 Поделиться Опубликовано 1 августа, 2019 1 час назад, neo сказал: 1) кто-нибудь знает с кем можно поговорить о браузерном API и об omnibox... может тут есть специалисты? Для этого есть CEF. Хотите внедрить Хром в свой браузер - используйте CEF. А не работу с окнами. Цитата Ссылка на комментарий
Вопрос
neo
Всем привет!
Народ такая вот задача... нужно как-то отличать ClassName в браузерах...
то есть надо отличать адресную строку от основного бокса браузера...
проблема в том что ИмяКласса в них одинаковое... или я просто как-то неправильно его получаю...
вот пример
Проблема в том что например в Хроме везде написано Chrome_WidgetWin_1
Изменено пользователем neoв фаерфоксе MozillaWindowClass итд
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.