Рейтинг:
12
OriginalGriff
Ты не можешь этого сделать.
Javascript намеренно ограничен в том, что он может делать: и одна из главных вещей, которую он не может сделать, - это запустить приложение - любое приложение-на вашем компьютере. Почему? Потому что если бы вы могли, то могли бы и вредоносные сайты. Поэтому по соображениям безопасности Javascript не может открывать и приложения.
И код C# в веб-среде работает на сервере, а не на клиенте: клиенту даже не нужно устанавливать .NET или даже быть способным установить его - это может быть подключенный к интернету холодильник, работающий с базовым браузером вообще без файловой системы!
Javascript всегда работает на клиенте, а не на сервере - поэтому, даже если он может вызвать выполнение кода C#, форма будет отображаться на сервере, за тысячи километров от того места, где сидит пользователь!
FlatlanD_
Спасибо за ваш подробный ответ. Нужно найти другой способ исполнить мои желания.
FlatlanD_
Может быть, можно вызвать метод из JS, чтобы изменить пользовательский интерфейс приложения C#? Например, видимость кнопок, текст кнопок и т. д.?
OriginalGriff
Что вы на самом деле пытаетесь сделать? Как вы думаете, с какой целью JS, разговаривая с вашим приложением, поможет вам?
Может быть, есть более простой способ.
FlatlanD_
На самом деле это трудно объяснить. Мое приложение имеет cefsharp реализован внутри со ссылкой на мою страницу. Когда я нажимаю определенную кнопку внутри своей страницы, она должна открыть мою регистрационную форму внутри приложения c# (эта регистрационная форма должна быть в приложении c#, а не в HTML). Кроме того, как приложение C#, так и HTML-страница должны изменять данные друг между другом.
OriginalGriff
Я сам не использовал CefSharp, но я понимаю, что вы можете это сделать - код C# действует как сервер, который содержит клиентский браузер в качестве элемента управления, - и клиент может получить доступ к серверным объектам через элементы управления.
https://blog.dmbcllc.com/create-a-desktop-application-using-angular-bootstrap-and-c/
Вроде бы говорит, что вы можете манипулировать объектами C# непосредственно из JS с помощью метода RegisterJsObject. Если это так, то это, вероятно, был бы правильный путь - но вам, вероятно, было бы лучше опубликовать новый вопрос, объясняющий использование CefSharp, и посмотреть, использовал ли кто-нибудь здесь его в гневе! :смеяться:
FlatlanD_
RegisterAsyncJsObject - я сделал это, но вызов этих методов из JS ничего не делает. Например, если я пытаюсь изменить видимость панели в другой форме с помощью этого метода, он ничего не делает.
OriginalGriff
Извините - но вам нужен кто-то с опытом работы в CefSharp, и это не я! :смеяться:
Напишите еще один вопрос, объясняющий CefSharp и то, что вы пытались сделать - на сайте есть много экспертов в разных областях, и один из них может вам помочь.
FlatlanD_
Ладно, большое вам спасибо.