Внедрение JavaScript в настольные приложения (.NET)
При помощи webcontrol CefSharp мы можем запустить полный браузер Chromium, встроенный в нашe настольное приложение .NET. Это супер мощно! Но как насчет интеграции с нашим C#.NET? Конечно, это возможно, просто нужно подумать о сценариях.
Во-первых, среда JavaScript находится внутри Chromium и отделена отнастольного .NET приложения, поэтому нам нужны точки интеграции.
1. Запустите код и дождитесь значения return: в этом случае нам нужно запустить функцию JavaScript и получить результат, который во многих случаях подходит. Нам просто нужно осуществить вызов .EvaluateScriptAsync() метода, передавая код JavaScript.
- // Браузер CefSharp
- var theScript = @"
- (function (){
- return LMV_VIEWER_VERSION;
- }());
- ";
- browser.EvaluateScriptAsync(theScript)
Это уже хорошо, но умеренно, поскольку большинство методов просмотра являются асинхронными.
2. Запустите код и дождитесь вывода информации: теперь давайте запустим код и дождёмся вывода, например, строка console.log. В этом случае наше приложение должно быть перечислено в событии ConsoleMessage. Здесь JavaScript браузера может преобразовать в строку JSON и.NET приложение может анализировать его. Simple.
- public Form1()
- {
- InitializeComponent();
- // какой-токод
- browser.ConsoleMessage += Browser_ConsoleMessage;
- }
- private void Browser_ConsoleMessage(object sender, ConsoleMessageEventArgs e)
- {
- JObject o = JObject.Parse(e.Message);
- }
Но есть трюк: в консоли много сообщений, поэтому вашему приложению может потребоваться проверить или прослушать только в определенное время, чтобы избежать ошибок.
В качестве практического примера, скажем, нашего .NET приложения, нуждается в списке листа на модели. На основании кода из этой статьи, давайте сделаем небольшое изменение, чтобы преобразовать результаты в строку:
- getAllLeafComponents(viewerApp.myCurrentViewer, function (dbIds) {
- console.log(JSON.stringify(dbIds);
- })
Затем применим к событию консольного приложения метод JArray.Parse . Готово. Сейчас.NET имеет список целых чисел.
Источник: https://forge.autodesk.com/blog/javascript-desktop-apps-net
Обсуждение: http://adn-cis.org/forum/index.php?topic=
Опубликовано 06.02.2018Отредактировано 06.02.2018 в 12:08:18