C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

WebView2に任意のProxyを設定する方法

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■101539 / inTopicNo.1)  WebView2に任意のProxyを設定する方法
  
□投稿者/ Nedame (1回)-(2023/03/14(Tue) 08:59:11)

分類:[C#] 

2023/03/14(Tue) 09:01:30 編集(投稿者)
こんにちは。

環境は、
Microsoft Visual Studio Community 2022 
C# (.Net 7 にしましたが特に拘りは無いです)
フォームアプリ
です。

WebView2に任意のProxyを設定するには、どうしたら良いのでしょう?
ネットで見つけた下記のコードが当てはまりそうですが、
どこに書けば良いのかが分からない状況です。

WebView2 webView21 = new Microsoft.Web.WebView2.WinForms.WebView2();
private async void Form1_Load(object sender, EventArgs e)
{
    var options = new CoreWebView2EnvironmentOptions();
    options.AdditionalBrowserArguments = "--proxy-server=\"proxyhostname:8000\"";
    var env = await CoreWebView2Environment.CreateAsync(null, null, options);
    await webView21.EnsureCoreWebView2Async(env);

    webView21.Dock = DockStyle.Fill;
    this.Controls.Add(webView21);
    webView21.Source = new Uri("Https://stackoverflow.com");
}

なお、現在のコードは下記です。
何かアドバイスいただけると助かります。
よろしくお願いいたします。

namespace TestDesktopApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitializeAsync();
        }

        async void InitializeAsync()
        {
            await webView21.EnsureCoreWebView2Async(null);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            webView21.CoreWebView2.Navigate("https://www.google.co.jp/");
        }
    }
}

引用返信 編集キー/
■101540 / inTopicNo.2)  Re[1]: WebView2に任意のProxyを設定する方法
□投稿者/ Hongliang (1281回)-(2023/03/14(Tue) 09:20:55)
WindowのSourceInitializedイベントあたりでやればいいかと思います。
WebView2のSourceプロパティを設定するとしたらEnsureCoreWebView2Asyncの後にしなければならないので、もしXAMLでSourceプロパティを設定しているならそれはC#側に移動させる必要があります。
引用返信 編集キー/
■101545 / inTopicNo.3)  Re[2]: WebView2に任意のProxyを設定する方法
□投稿者/ Nedame (2回)-(2023/03/14(Tue) 13:48:26)
2023/03/14(Tue) 13:57:25 編集(投稿者)

No101540 (Hongliang さん) に返信
アドバイス内容が私にはかなり高度だったので1つ1つ読み解く必要がありましたが、
これが正しいの分かりませんが、とりあえず動くようになりました。
ありがとうございました。

private async void Form1_Load(object sender, EventArgs e)
{
var options = new CoreWebView2EnvironmentOptions();
options.AdditionalBrowserArguments = "--proxy-server=\"MyProxy:8080\"";
var env = await CoreWebView2Environment.CreateAsync(null, null, options);
await webView21.EnsureCoreWebView2Async(env);

webView21.Dock = DockStyle.Fill;
this.Controls.Add(webView21);
webView21.Source = new Uri("https://www.google.co.jp/");
}
解決済み
引用返信 編集キー/
■101546 / inTopicNo.4)  Re[3]: WebView2に任意のProxyを設定する方法
□投稿者/ Hongliang (1282回)-(2023/03/14(Tue) 15:10:14)
あっ、申し訳ありません、なぜかWinFormではなくてWPFの話という前提で回答しておりました…。

デザイナで配置しているなら、
> webView21.Dock = DockStyle.Fill;
> this.Controls.Add(webView21);
ここら辺は必要ではありません。
解決済み
引用返信 編集キー/
■101549 / inTopicNo.5)  Re[4]: WebView2に任意のProxyを設定する方法
□投稿者/ Nedame (3回)-(2023/03/14(Tue) 15:46:52)
No101546 (Hongliang さん) に返信
> なぜかWinFormではなくてWPFの話という前提で回答しておりました…。
なるほど、スッキリしました。
「先に処理が必要」という部分を知れて答えに行き着く良い切っ掛けになりました。
WinFormと表現しなければいけなかったですね、こちらこそすみません。

> デザイナで配置しているなら、
>>webView21.Dock = DockStyle.Fill;
>>this.Controls.Add(webView21);
> ここら辺は必要ではありません。

まさに、今、これが原因でおかしなことになってました。
ありがとうございました!
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ