четверг, 7 февраля 2013 г.

выполнение javascript в программе на c++

1. Создать файл в блокноте, только с этой строкой:

Шаги для создания .dll:

Но данный пример подходит лишь для теста, т.к. компонент webBrowser я категорически не хотел использовать в своей программе, поэтому я принялся искать другие способы решения и нашёл следующий пример:

webBrowser1.Document.InvokeScript("test", new String[] { "called from client code" });

После чего достаточно вызвать следующий код:

* This source code was highlighted with .

  "</body></html>";

  "call client code from script code</button>" +

  "onclick=\"window.external.Test('called from script code')\">" +

  "</script></head><body><button " +

  "function test(message) { alert(message); }" +

  "<html><head><script>" +

Для того, чтобы проверить, действительно ли выполняется мой код, я сразу выбрал самый простой способ это с помощью компонента webBrowser, пример из Msdn:

В моём случае было несколько проще, т.к. никаких фоновых скриптов не выполнялось, а чётко было видно, какие скрипты выполнялись при том или ином действии. Вот тогда я и узнал, что для получения моего «случайного» числа должно выполниться больше 200 строк кода или немногим больше 15 функций. Первым о чём я подумал, что сейчас быстренько переведу данный код на C# и на этом закончу, но проблема была в том, что знания javascript у меня поверхностные, а весь код пропущен через обфускатор и по коду видно, что там какие-то криптографические преобразования происходят, поэтому я решил, что проще будет данный код выполнить в исходном виде.

Начну с небольшой истории как начиналась разработка, я зашёл на сайт, перешёл в кабинет, после чего загрузил и начал смотреть и записывать какие параметры куда передаются, с помощью каких методов и по каким ссылкам. Довольно быстро я набросал себе алгоритм и принялся реализовывать, но столкнулся с проблемой, оказалось, что один из параметров, который я принял за случайное число не являлся таковым, чуть позже выяснилось, что вызов функции random() на самом видном месте служил лишь для отвлечения внимания, что же на самом деле там происходит помогло мне установить дополнение для Firefox под названием , для тех, кто не знаком с данным или похожими дополнениями, то выглядит оно, таким образом, при открытии на странице google.com:

Ссылку на сайт, а также примеры javascript функций, которые я использовал, при тестировании я давать не буду, чтобы читатели не ставили эксперименты над данным ресурсом, речь будет вестись в общих чертах.

Под катом я расскажу о нерядовом взаимодействии с сайтом, каким образом я решил задачу на тот момент и смогли ли обе библиотеки справиться с той же задачей. Сразу скажу, что речь пойдёт о следующих библиотеках: и .

На днях просматривал популярные библиотеки на и увидел там пару библиотек для работы с javascript. Сразу вспомнился случай, когда мне нужно было написать небольшую программку для взаимодействия с личным кабинетом на одном сайте. Поэтому без раздумий решил попробовать, как бы они справились с той задачей.

Выполнение javascript в программе на C#

Выполнение javascript в программе на C# / Хабрахабр

Комментариев нет:

Отправить комментарий