이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 5093|회답: 2

[출처] [WebView2] (4) 웹과 WinForm은 함수 메서드를 서로 호출합니다

[링크 복사]
게시됨 2022. 9. 29. 오후 9:03:59 | | | |
요구사항: 이전 글에서는 웹 인터페이스와 WinForm 애플리케이션을 서로 통신하여 메시지를 전송하는 방법을 설명했으나, 메시지만 성공적으로 전송되었고 응답 정보를 얻을 수 없었습니다. 만약 C# 클라이언트가 웹의 함수 메서드를 호출해 반환 결과를 받는다면 어떻게 될까요? 웹에서 C# 코드를 호출해서 반환 값을 어떻게 받나요?

복습:

[WebView2] (1) Microsoft Edge WebView2 기술에 대한 초기 소개
https://www.itsvse.com/thread-10361-1-1.html

[WebView2] (2) WinForm이 웹 콘텐츠를 표시하기 위해 WebView2를 도입함
https://www.itsvse.com/thread-10362-1-1.html

WebView2 (3) 웹과 WinForm 애플리케이션 간의 양방향 통신
https://www.itsvse.com/thread-10364-1-1.html
먼저, 구현 렌더링을 살펴보겠습니다. 웹사이트에서는 WinForm 애플리케이션이라고 부릅니다클립보드 데이터 가져오기, 윈 폼 앱웹의 abc 메서드를 호출하여 반환값을 얻으세요다음과 같습니다:



C#은 웹 함수 메서드를 호출합니다

이 시나리오는 웹에서 JavaScript를 실행하는 방법을 보여줍니다. 이 방식에서는 호스트 앱이 실행할 자바스크립트 코드를 지정하고 ExecuteScriptAsync를 사용해 웹에 코드를 전달합니다. ExecuteScriptAsync 함수는 JavaScript 결과를 ExecuteScript 호출자에게 반환합니다.

Angular index.html 페이지 코드는 다음과 같습니다:

프론트엔드는 주로 abc 함수를 정의합니다.

Winform은 다음 코드로 웹의 abc 함수를 호출합니다:



웹 페이지는 C# 함수 메서드를 호출합니다

웹 위에 네이티브 객체를 전달하는 것. 웹에서 객체를 호출하는 메서드가 호출됩니다.

메서드 호출을 나타내는 메시지를 사용하려면 AddHostObjectToScript API를 사용하세요. 큰 수준에서 이 API는 네이티브(호스트) 객체를 웹에 노출하고 프록시로 사용할 수 있도록 허용합니다. window.chrome.webview.hostObjects를 사용하세요. {name}>a0> 이 물체들에 접근하세요. 참고 문서:하이퍼링크 로그인이 보입니다.

웹페이지에 새 버튼을 만들고, C# 코드를 호출해 시스템의 현재 클립보드 데이터를 얻으세요.

Angular app.component.html 코드는 다음과 같습니다:

app.component.ts 코드는 다음과 같습니다:

프론트엔드 JS 코드는 동기식 호출과 비동기식 호출을 가집니다.

c#은 다음 코드로 WebView2HostObject 호스트 객체를 정의합니다:


참고: 커스텀 WebView2HostObject 클래스는 태그를 달아야 합니다[ClassInterface(ClassInterfaceType.AutoDual)][ComVisible(true)]property를 원한다면, 그렇지 않으면 JS가 클래스에 접근할 수 없게 됩니다.

그 다음 다음 AddHostObjectToScript(String,Object)를 통해 다음 코드로 새로 정의된 인스턴스를 추가합니다:

마지막으로, 프론트엔드의 버튼을 눌러 클립보드 데이터를 얻으세요. 효과는 다음과 같습니다:



(끝)





이전의:WebView2 (3) 웹과 WinForm 애플리케이션 간의 양방향 통신
다음:【턴】CURL 명령어는 프록시를 사용하고, 프록시가 도입됩니다
게시됨 2022. 10. 8. 오후 3:07:01 |
배우세요
게시됨 2023. 3. 31. 오후 1:30:38 |
이 경험에서 배워요, 공유해 주셔서 감사합니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com