Сообщение Re[3]: использования CEF в Visual Studio от 19.01.2017 15:29
Изменено 25.01.2017 12:32 Serginio1
Re[3]: использования CEF в Visual Studio
Здравствуйте, fddima, Вы писали:
F>Здравствуйте, Serginio1, Вы писали:
F>Честно говоря, учитывая что ты нашел все необходимые материалы — в чём вопрос-то?
F>Если есть желания связаться с CEF — вопросы лучше задавать на оригинальном форуме (там больше людей в теме).
F>Если есть необходимость — я могу помочь в скайпе (направить в нужную сторону или попытаться объяснить на пальцах по мере возникновения вопросов), как делаются те или иные вещи в CEF.
F>В плане JS->Native вызовов всё сводится к нескольким подходам:
F>1. XHR и в browser process реализуется resource handler. Преимущество: renderer->browser IPC достаётся бесплатно. Недостаток: только асинхронные вызовы.
F>2. V8Handler/V8Accessor. Преимущество: выставляем любой JS API. Недостаток: renderer->browser IPC бесплатно не достаётся, но посылку сообщений делаем через CefProcessMessage (только асинхронный обмен). Если нужен иной IPC — никто не помешает создать.
В принципе это самый универсальный вариант.
F>3. Используем CEF's message router. Как бы всё готово, но по сути делает оно тоже что и (2), выставляя готовый шлюз в JS.
F>Так или иначе на стороне JS должна быть какая-то клиентская библиотека (генерённая?) выставляющая вменяемый API для потребления, поэтому каким именно образом оно реализовано (1-3) обычно не так уж важно.
Огромное спасибо за ответ. 2 дня боролся. Но поборол. У меня опыта на С++ мало. Вспоминаю, то что забыл и учу то, что не знал. Но сегодня подключил
И в частности Кроссплатформенное использование классов .Net из неуправляемого кода. Или аналог IDispatch на Linux
И вызвал методы. Так, что буду двигаться.
Добавлю асинхронные методы, компиляцию оберток для событий.
Мне по сути нужно со стороны JS сделать несколько методов
ManagedCallAsFunc
ManagedCallAsFunAsync
ManagedGetPropVal
ManagedSetPropVal
И подпись на события. И через них создавать любые объекты, вызывать их методы.
Думаю за 2 недели сделаю.
У CEF есть и dev tools. Но вот нужно правильно подключить файлы из CefClient. Разберусь.
Главное сдвинулся с мертвой точки. Еще раз огромное спасибо!
Вот такой вариант вполне мне подходит
И JS
F>Здравствуйте, Serginio1, Вы писали:
F>Честно говоря, учитывая что ты нашел все необходимые материалы — в чём вопрос-то?
F>Если есть желания связаться с CEF — вопросы лучше задавать на оригинальном форуме (там больше людей в теме).
F>Если есть необходимость — я могу помочь в скайпе (направить в нужную сторону или попытаться объяснить на пальцах по мере возникновения вопросов), как делаются те или иные вещи в CEF.
F>В плане JS->Native вызовов всё сводится к нескольким подходам:
F>1. XHR и в browser process реализуется resource handler. Преимущество: renderer->browser IPC достаётся бесплатно. Недостаток: только асинхронные вызовы.
F>2. V8Handler/V8Accessor. Преимущество: выставляем любой JS API. Недостаток: renderer->browser IPC бесплатно не достаётся, но посылку сообщений делаем через CefProcessMessage (только асинхронный обмен). Если нужен иной IPC — никто не помешает создать.
F>3. Используем CEF's message router. Как бы всё готово, но по сути делает оно тоже что и (2), выставляя готовый шлюз в JS.
F>Так или иначе на стороне JS должна быть какая-то клиентская библиотека (генерённая?) выставляющая вменяемый API для потребления, поэтому каким именно образом оно реализовано (1-3) обычно не так уж важно.
Огромное спасибо за ответ. 2 дня боролся. Но поборол. У меня опыта на С++ мало. Вспоминаю, то что забыл и учу то, что не знал. Но сегодня подключил
И в частности Кроссплатформенное использование классов .Net из неуправляемого кода. Или аналог IDispatch на Linux
И вызвал методы. Так, что буду двигаться.
Добавлю асинхронные методы, компиляцию оберток для событий.
Мне по сути нужно со стороны JS сделать несколько методов
ManagedCallAsFunc
ManagedCallAsFunAsync
ManagedGetPropVal
ManagedSetPropVal
И подпись на события. И через них создавать любые объекты, вызывать их методы.
Думаю за 2 недели сделаю.
У CEF есть и dev tools. Но вот нужно правильно подключить файлы из CefClient. Разберусь.
Главное сдвинулся с мертвой точки. Еще раз огромное спасибо!
Вот такой вариант вполне мне подходит
class MyV8Handler2 : public CefV8Handler {
public:
MyV8Handler2() {}
virtual bool Execute(const CefString& name,
CefRefPtr<CefV8Value> object,
const CefV8ValueList& arguments,
CefRefPtr<CefV8Value>& retval,
CefString& exception) OVERRIDE {
if (arguments.size() >0)
{
if (arguments[0]->IsString())
{
retval = CefV8Value::CreateString("My Value!" + arguments[0]->GetStringValue().ToString());
return true;
}
}
retval = CefV8Value::CreateString("My Value!");
return true;
}
// Provide the reference counting implementation for this class.
IMPLEMENT_REFCOUNTING(MyV8Handler2);
};void SimpleApp::OnContextCreated(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefV8Context> context)
{
// Retrieve the context's window object.
CefRefPtr<CefV8Value> object = context->GetGlobal();
// Create an instance of my CefV8Handler object.
CefRefPtr<CefV8Handler> handler = new MyV8Handler2();
// Create the "myfunc" function.
CefRefPtr<CefV8Value> func = CefV8Value::CreateFunction("myfunc2", handler);
// Add the "myfunc" function to the "window" object.
object->SetValue("myfunc2", func, V8_PROPERTY_ATTRIBUTE_NONE);
}И JS
<script language="JavaScript">
alert(window.myfunc2("Привет 2"));
</script>Re[3]: использования CEF в Visual Studio
Здравствуйте, fddima, Вы писали: