image-uploader
image-uploader copied to clipboard
Chrome Extension
грубо говоря, должны быть возможности:
Сделать скриншот всей страницы Сделать скриншот фрагмента (выбор прямоугольной области с возможностью прокрутки, в Joxi например прокрутка не работает) Правый клик по картинке -> Загрузить с помощью Image Uploader Выделить текст с картинками -> Правый клик -> Перезалить картинки с помощью Image Uploader И совсем круто было бы если бы получилось реализовать поддержку "Пользовательских элементов меню"
Используя Native Messaging https://developer.chrome.com/extensions/nativeMessaging
Не сказал бы что это вариант... ПО запущенно постоянно, почему бы не реализовать внутренний HTTP/WS сервер и AJAX или те же WS передавать сообщения в ПО и выполнять действия? Плюсом будет тот факт, что AJAX и WS поддерживают все браузеры.
А если не запущено? Запустить из расширения никак не удастся, кроме как через Native Messaging. Так что наверно придется сделать и то и другое.
Кстати прочитал вашу статью, http://arhangelsoft.ru/2013/06/programmer/почему-подмена-user-agent-для-twebbrowser-не-является-ре/ делаю тут одну штуку http://rawgit.com/zenden2k/image-uploader/master/Docs/api_webbrowser.html как сделать чтобы эмулировалась самая последняя версия?
А если не запущено? Запустить из расширения никак не удастся, кроме как через Native Messaging. Так что наверно придется сделать и то и другое.
когда писал своё расширения, паранойя у хрома зашкаливала сильнее чем у касперского. Странно... обязательно применю Native Messaging.
Кстати прочитал вашу статью
В конце статьи прописано, как заставить рендер рисовать страничку в соотв. с нужным стандартом, для конкретного exe, если тот использовать этот элемент винды.
как сделать чтобы эмулировалась самая последняя версия?
Тут нужно учитывать особенности ОС:
- эмулятор можно использовать начиная с IE8. Фактически IE8 нужно будет и поставить пользователю на комп.
- Для винды до Vista, IE8 это максимально возможный IE, дальнейшие не поставить из-за древности OS и как следствие нет нужных компонент в ядре винды.
- Для 7-и и далее, есть где разгуляться. Эмулируй хоть до 11 IE, соотв. 11 IE должен быть установлен. Нельзя эмулировать то, чего нет.
Определяете версию ОС, определяете версию установленного IE, пишите в реестр правило с нужным кодом эмуляции, перезапускаете ПО и все.
Пойду допишу это в статью...
Да я уже сделал код https://github.com/zenden2k/image-uploader/blob/master/Source/Func/WinUtils.cpp#L948
Прикольная штука! А доступ к DOM будет? Можно будет нагревать всякие хитро-выдуманные системы анти-спама :) Типа "введите капчу", хоп полноценное окно веб-браузера для ввода...
Ну как бы диалоговое окно ввода капчи давно есть (AskUserCaptcha) А насчет доступ к DOM, пока не знаю.
Этот класс нужен для другого - для авторизации через OAuth 2.0 на некоторых тупых сайтах.
OAuth вроде бы стандартизирован же. Должны мыть общие методы работы.. ну в общем применение ему найдется))
Мне бы с событиями разобраться. Вы не знаете случайно, чем отличается у интерфейса IWebBrowser2 OnNavigateComplete2 от OnDocumentComplete? Мне вообще нужно детектить момент смены URL.
1е - когда загружен сам документ. 2е - когда DOM отрисован рендером и доступен для COM. Я бы использовал Navigate.
Вроде онлайн сервисы считают мой браузер за 11 версию, но javascript ошибки как продолжали сыпаться, так и продолжают.... А, они и в самом IE сыпятся в консоль. Неужто IE так плох, даже 11 версия?
Ну IE любит отличаться в плане недореаализации общепринятых стандартов, потом приходится использовать макро-язык IE чтобы давать ему правильные JS/CSS. С одной стороны виноват IE, с другой, разработчики сайта, которые забыли про IE. И вот непонятно.
В нормальном IE все так же ок? 11 IE сами пробовали?
Я думаю, что если сделать доступ к DOM, этому классу найдется гораздо более широкое применение
А вот и первый скрипт, использующий новый класс https://github.com/zenden2k/image-uploader/blob/master/Data/Scripts/vk.nut
Лучше отдельным классом парсер DOM из строки (кроссплатформенно).
Not bad :+1:
Вот что получилось http://rawgit.com/zenden2k/image-uploader/master/Docs/api_htmldocument.html http://rawgit.com/zenden2k/image-uploader/master/Docs/api_htmlelement.html плюс есть возможность запускать javascript в браузере и получать результат его выполнения
Правда оказалось что у IHTMLInputFileElement свойство value только для чтения ((( я думал это ограничение только для javascript.
надо будет попробовать, однако это сугубо Win фишка. Может все таки парсер HTML?
Все ж вспомнил ещё один крайне интересный проект... http://phantomjs.org/ может вы его как-то прикрутите? веб-бро кросс-платформенный, без окон без дверей...
В своё время пытался, да и сейчас где-то лежит, пытался все это в dll завернуть :) Не прокатило.
Парсер будет https://github.com/zenden2k/image-uploader/issues/80 правда не знаю когда
Я всё таки сделал это! Аплод через Internet Explorer. В интернете писали, что заполнить IHTMLInputFileElement невозможно. Оказалось, что если очень хотеть, то можно. Там такой замысловатый код получился, с хуками, таймерами, доступом через IAccesible. Не знаю, насколько стабильно это будет работать, но всё же как-то работает. https://github.com/zenden2k/image-uploader/blob/master/Data/Scripts/vfl.nut
Там такой замысловатый код получился, с хуками, таймерами, доступом через IAccesible. Не знаю, насколько стабильно это будет работать, но всё же как-то работает.
все проще. Через DOMские интерфейсы это нельзя. А через JS можно на ушах стоять :)
String code = "alert('o_O');"; String result = webBrowser1.Document.InvokeScript("eval",code);
Могу даже дома на Delphi накидать вам демку, пишите произвольный JS и он выполняется.
Можно не eval, а допустим плодить узлы в DOM c кодом, и так же invokeScript вызывать.
Причем тут это? Заполнить input type=file через JS тем более не получится. А функция runJavaScript есть в API скриптов http://rawgit.com/zenden2k/image-uploader/master/Docs/api_webbrowser.html
Могу написать) как должно выглядить и работать?
Пока не готово API со стороны программы. Я пока не решил как передавать данные в Image Uploader, через Native Messaging или HTTP, а Native Messaging только для запуска программы и получения номера порта. Наверно будет правильнее сделать через HTTP, чтобы потом можно было легко прикрутить поддержку Firefox
Но грубо говоря, должны быть возможности: Сделать скриншот всей страницы Сделать скриншот фрагмента (выбор прямоугольной области с возможностью прокрутки, в Joxi например прокрутка не работает) Правый клик по картинке -> Загрузить с помощью Image Uploader Выделить текст с картинками -> Правый клик -> Перезалить картинки с помощью Image Uploader И совсем круто было бы если бы получилось реализовать поддержку "Пользовательских элементов меню"
Я сразу использовал HTTP. Изврат с запуском бинарника отмел, т.к. это грубо нарушение безопасности, что собственно блокируется периодически всеми бро, а через AJAX засылай что хочешь, куда хочешь.
Сделать скриншот фрагмента (выбор прямоугольной области с возможностью прокрутки, в Joxi например прокрутка не работает)
Очень просто это делается. Я просто передам в программу скрин страницы целиком, а вы уже там сами крутите её как угодно :dancers:
по хорошему лучше вместо XHR использовать веб-сокеты. Их уже поддерживают все бро, за исключением старых версий осла. Настроку порта отдать пользователю на стороне сервера(IU) и клиента(браузер), т.к. Native Messaging есть только у хрома(гоогловского), остальные не дадут просто взять и запусть EXE да ещё и получить что-то. Разве что мозила через интерфейсные расширения.
И совсем круто было бы если бы получилось реализовать поддержку "Пользовательских элементов меню"
Не смотрел, но вроде бы это статично, не помню уже.