teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

見直しキャンペーン中

2023/07/22 07:04

投稿

TN8001
TN8001

スコア10108

answer CHANGED
@@ -1,156 +1,156 @@
1
- 当方では問題なく動きますねぇ。AnyCPU対応法が違うのでしょうか?
2
- 3パターン中推奨っぽい
3
- [cefsharp/CefSharp.MinimalExample at demo/anycpu](https://github.com/cefsharp/CefSharp.MinimalExample/tree/demo/anycpu)
4
- の通りにやりました。
5
-
6
- Form1.cs
7
- ```C#
8
- using System.Windows.Forms;
9
- using CefSharp.WinForms;
10
-
11
- namespace Questions264430
12
- {
13
- public partial class Form1 : Form
14
- {
15
- public Form1()
16
- {
17
- InitializeComponent();
18
-
19
- var browser = new ChromiumWebBrowser("https://www.nicovideo.jp/") { Dock = DockStyle.Fill, };
20
- browser.BrowserSettings.AcceptLanguageList = "ja-JP";
21
- Controls.Add(browser);
22
- }
23
- }
24
- }
25
- ```
26
- Program.cs
27
- ```C#
28
- using System;
29
- using System.IO;
30
- using System.Reflection;
31
- using System.Runtime.CompilerServices;
32
- using System.Windows.Forms;
33
- using CefSharp;
34
- using CefSharp.WinForms;
35
-
36
- namespace Questions264430
37
- {
38
- // https://github.com/cefsharp/CefSharp.MinimalExample/blob/demo/anycpu/CefSharp.MinimalExample.WinForms/Program.cs
39
- internal class Program
40
- {
41
- [STAThread]
42
- public static void Main()
43
- {
44
- AppDomain.CurrentDomain.AssemblyResolve += Resolver;
45
- LoadApp();
46
- }
47
-
48
- [MethodImpl(MethodImplOptions.NoInlining)]
49
- private static void LoadApp()
50
- {
51
- var settings = new CefSettings();
52
- Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
53
- Application.Run(new Form1());
54
- }
55
-
56
- private static Assembly Resolver(object sender, ResolveEventArgs args)
57
- {
58
- if(args.Name.StartsWith("CefSharp"))
59
- {
60
- var assemblyName = args.Name.Split(new[] { ',' }, 2)[0] + ".dll";
61
- var archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", assemblyName);
62
-
63
- return File.Exists(archSpecificPath) ? Assembly.LoadFile(archSpecificPath) : null;
64
- }
65
-
66
- return null;
67
- }
68
- }
69
- }
70
- ```
71
- ![アプリ画像](2fa8c4388de16d0b7dd1235598255006.png)
72
-
73
- ---
74
-
75
- 前々回の回答で`WebView2`に言及したので、こちらも試してみました。
76
-
77
- 新しいEdge入っれば何の設定もせずに上の画像と同じ状態になした
78
- プレビュが外て同梱方法等が整備されれば、第一候補なるいます。
79
- ブラウザコントロールはどれもまともに使ったことがないので、細かい使用感はわかりませんが^^;
80
-
81
- [Microsoft Edge WebView 2 Windows フォムアプリ - Microsoft Edge Development | Microsoft Docs](https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms)
82
- Canaryを入れろと書いてありますが、Devでも動きました(Beta・ノーマルでは動きませんでした)
83
-
84
- ```C#
85
- using System;
86
- using System.Windows.Forms;
87
- using Microsoft.Web.WebView2.WinForms;
88
-
89
- namespace WebView2Test
90
- {
91
- public partial class Form1 : Form
92
- {
93
- public Form1()
94
- {
95
- InitializeComponent();
96
- var webView2 = new WebView2 { Dock = DockStyle.Fill, Source = new Uri("https://www.nicovideo.jp/"), };
97
- Controls.Add(webView2);
98
- }
99
- }
100
- }
101
- ```
102
- ---
103
-
104
- 追記
105
-
106
- [WinFormsでCefSharpをAnyCPU構成で使う方法 | おてて動かそう](https://takumi-oda.com/blog/2019/12/09/post-1017/)
107
- こちらは32bitを明示するパターンですね。
108
-
109
- 本家でいうとこれになりますね。
110
- [CefSharp.MinimalExample/CefSharp.MinimalExample.WinForms at demo/anycpuprefer32bit · cefsharp/CefSharp.MinimalExample](https://github.com/cefsharp/CefSharp.MinimalExample/tree/demo/anycpuprefer32bit/CefSharp.MinimalExample.WinForms)
111
-
112
- 念のため自分で同じように作ったものと、
113
- [xiaotiantakumi/AnyCPUWinFormsCefSharpSample at WinFormsでCefSharpをAnyCPU構成で使う方法](https://github.com/xiaotiantakumi/AnyCPUWinFormsCefSharpSample/tree/WinForms%E3%81%A7CefSharp%E3%82%92AnyCPU%E6%A7%8B%E6%88%90%E3%81%A7%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95)
114
- をクローンしたもの両方でテストしました。
115
-
116
- ```C#
117
- using System.Windows.Forms;
118
- using CefSharp;
119
- using CefSharp.WinForms;
120
-
121
- namespace WinFormsCefSharpSample
122
- {
123
- public partial class Form1 : Form
124
- {
125
- public Form1()
126
- {
127
- InitializeComponent();
128
- InitializeChromium();
129
- }
130
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
131
- {
132
- Cef.Shutdown();
133
- }
134
-
135
- private ChromiumWebBrowser chromeBrowser;
136
- private void InitializeChromium()
137
- {
138
- var settings = new CefSettings();
139
-
140
- settings.AcceptLanguageList = "ja-JP"; // どちらかでいい
141
-
142
- Cef.Initialize(settings);
143
- chromeBrowser = new ChromiumWebBrowser("https://www.nicovideo.jp/");
144
-
145
- chromeBrowser.BrowserSettings.AcceptLanguageList = "ja-JP"; // どちらかでいい
146
-
147
- Controls.Add(chromeBrowser);
148
- chromeBrowser.Dock = DockStyle.Fill;
149
- }
150
- }
151
- }
152
- ```
153
- `AcceptLanguageList = "ja-JP"`をどちらかに付ければ日本語になりました(両方つけてもいいですが)
154
-
155
- かなり作りこんでおられるようですが、一旦当該記事のように**最小構成**で作ってみてどうなるかですね。
1
+ 当方では問題なく動きますねぇ。AnyCPU対応法が違うのでしょうか?
2
+ 3パターン中推奨っぽい
3
+ [cefsharp/CefSharp.MinimalExample at demo/anycpu](https://github.com/cefsharp/CefSharp.MinimalExample/tree/demo/anycpu)
4
+ の通りにやりました。
5
+
6
+ ```cs:Form1.cs
7
+ using System.Windows.Forms;
8
+ using CefSharp.WinForms;
9
+
10
+ namespace Questions264430
11
+ {
12
+ public partial class Form1 : Form
13
+ {
14
+ public Form1()
15
+ {
16
+ InitializeComponent();
17
+
18
+ var browser = new ChromiumWebBrowser("https://www.nicovideo.jp/") { Dock = DockStyle.Fill, };
19
+ browser.BrowserSettings.AcceptLanguageList = "ja-JP";
20
+ Controls.Add(browser);
21
+ }
22
+ }
23
+ }
24
+ ```
25
+
26
+ ```cs:Program.cs
27
+ using System;
28
+ using System.IO;
29
+ using System.Reflection;
30
+ using System.Runtime.CompilerServices;
31
+ using System.Windows.Forms;
32
+ using CefSharp;
33
+ using CefSharp.WinForms;
34
+
35
+ namespace Questions264430
36
+ {
37
+ // https://github.com/cefsharp/CefSharp.MinimalExample/blob/demo/anycpu/CefSharp.MinimalExample.WinForms/Program.cs
38
+ internal class Program
39
+ {
40
+ [STAThread]
41
+ public static void Main()
42
+ {
43
+ AppDomain.CurrentDomain.AssemblyResolve += Resolver;
44
+ LoadApp();
45
+ }
46
+
47
+ [MethodImpl(MethodImplOptions.NoInlining)]
48
+ private static void LoadApp()
49
+ {
50
+ var settings = new CefSettings();
51
+ Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
52
+ Application.Run(new Form1());
53
+ }
54
+
55
+ private static Assembly Resolver(object sender, ResolveEventArgs args)
56
+ {
57
+ if(args.Name.StartsWith("CefSharp"))
58
+ {
59
+ var assemblyName = args.Name.Split(new[] { ',' }, 2)[0] + ".dll";
60
+ var archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", assemblyName);
61
+
62
+ return File.Exists(archSpecificPath) ? Assembly.LoadFile(archSpecificPath) : null;
63
+ }
64
+
65
+ return null;
66
+ }
67
+ }
68
+ }
69
+ ```
70
+ ![アプリ画像](2fa8c4388de16d0b7dd1235598255006.png)
71
+
72
+ ---
73
+
74
+ 前々回の回答で`WebView2`に言及したので、こちらも試してみました。
75
+
76
+ 新しいEdgeが入っていれば何の設定もせずに、上の画像と同じ状態になりました。
77
+ プレビュー外れ同梱方法等が整備さば、第一候補になると思い
78
+ ブラウザコントロルはどもまとも使ったこがなので、細かい使用感はわかりせんが^^;
79
+
80
+ [Microsoft Edge WebView 2 Windows フォームアプリ - Microsoft Edge Development | Microsoft Docs](https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms)
81
+ Canaryを入れろと書いてありますが、Devでも動きました(Beta・ノマルでは動きませんでした)
82
+
83
+ ```cs
84
+ using System;
85
+ using System.Windows.Forms;
86
+ using Microsoft.Web.WebView2.WinForms;
87
+
88
+ namespace WebView2Test
89
+ {
90
+ public partial class Form1 : Form
91
+ {
92
+ public Form1()
93
+ {
94
+ InitializeComponent();
95
+ var webView2 = new WebView2 { Dock = DockStyle.Fill, Source = new Uri("https://www.nicovideo.jp/"), };
96
+ Controls.Add(webView2);
97
+ }
98
+ }
99
+ }
100
+ ```
101
+
102
+ ---
103
+
104
+ 追記
105
+
106
+ [WinFormsでCefSharpをAnyCPU構成で使う方法 | おてて動かそう](https://takumi-oda.com/blog/2019/12/09/post-1017/)
107
+ こちらは32bitを明示するパターンですね。
108
+
109
+ 本家でいうとこれになりますね。
110
+ [CefSharp.MinimalExample/CefSharp.MinimalExample.WinForms at demo/anycpuprefer32bit · cefsharp/CefSharp.MinimalExample](https://github.com/cefsharp/CefSharp.MinimalExample/tree/demo/anycpuprefer32bit/CefSharp.MinimalExample.WinForms)
111
+
112
+ 念のため自分で同じように作ったものと、
113
+ [xiaotiantakumi/AnyCPUWinFormsCefSharpSample at WinFormsでCefSharpをAnyCPU構成で使う方法](https://github.com/xiaotiantakumi/AnyCPUWinFormsCefSharpSample/tree/WinForms%E3%81%A7CefSharp%E3%82%92AnyCPU%E6%A7%8B%E6%88%90%E3%81%A7%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95)
114
+ をクローンしたもの両方でテストしました。
115
+
116
+ ```cs
117
+ using System.Windows.Forms;
118
+ using CefSharp;
119
+ using CefSharp.WinForms;
120
+
121
+ namespace WinFormsCefSharpSample
122
+ {
123
+ public partial class Form1 : Form
124
+ {
125
+ public Form1()
126
+ {
127
+ InitializeComponent();
128
+ InitializeChromium();
129
+ }
130
+ private void Form1_FormClosing(object sender, FormClosingEventArgs e)
131
+ {
132
+ Cef.Shutdown();
133
+ }
134
+
135
+ private ChromiumWebBrowser chromeBrowser;
136
+ private void InitializeChromium()
137
+ {
138
+ var settings = new CefSettings();
139
+
140
+ settings.AcceptLanguageList = "ja-JP"; // どちらかでいい
141
+
142
+ Cef.Initialize(settings);
143
+ chromeBrowser = new ChromiumWebBrowser("https://www.nicovideo.jp/");
144
+
145
+ chromeBrowser.BrowserSettings.AcceptLanguageList = "ja-JP"; // どちらかでいい
146
+
147
+ Controls.Add(chromeBrowser);
148
+ chromeBrowser.Dock = DockStyle.Fill;
149
+ }
150
+ }
151
+ }
152
+ ```
153
+ `AcceptLanguageList = "ja-JP"`をどちらかに付ければ日本語になりました(両方つけてもいいですが)
154
+
155
+ かなり作りこんでおられるようですが、一旦当該記事のように**最小構成**で作ってみてどうなるかですね。
156
156
  それでもダメな場合はChromeの設定等他の要因ということになりそうですが、ちょっとわかりそうにありません。

1

追記 32bit

2020/05/27 09:27

投稿

TN8001
TN8001

スコア10108

answer CHANGED
@@ -98,4 +98,59 @@
98
98
  }
99
99
  }
100
100
  }
101
- ```
101
+ ```
102
+ ---
103
+
104
+ 追記
105
+
106
+ [WinFormsでCefSharpをAnyCPU構成で使う方法 | おてて動かそう](https://takumi-oda.com/blog/2019/12/09/post-1017/)
107
+ こちらは32bitを明示するパターンですね。
108
+
109
+ 本家でいうとこれになりますね。
110
+ [CefSharp.MinimalExample/CefSharp.MinimalExample.WinForms at demo/anycpuprefer32bit · cefsharp/CefSharp.MinimalExample](https://github.com/cefsharp/CefSharp.MinimalExample/tree/demo/anycpuprefer32bit/CefSharp.MinimalExample.WinForms)
111
+
112
+ 念のため自分で同じように作ったものと、
113
+ [xiaotiantakumi/AnyCPUWinFormsCefSharpSample at WinFormsでCefSharpをAnyCPU構成で使う方法](https://github.com/xiaotiantakumi/AnyCPUWinFormsCefSharpSample/tree/WinForms%E3%81%A7CefSharp%E3%82%92AnyCPU%E6%A7%8B%E6%88%90%E3%81%A7%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95)
114
+ をクローンしたもの両方でテストしました。
115
+
116
+ ```C#
117
+ using System.Windows.Forms;
118
+ using CefSharp;
119
+ using CefSharp.WinForms;
120
+
121
+ namespace WinFormsCefSharpSample
122
+ {
123
+ public partial class Form1 : Form
124
+ {
125
+ public Form1()
126
+ {
127
+ InitializeComponent();
128
+ InitializeChromium();
129
+ }
130
+ private void Form1_FormClosing(object sender, FormClosingEventArgs e)
131
+ {
132
+ Cef.Shutdown();
133
+ }
134
+
135
+ private ChromiumWebBrowser chromeBrowser;
136
+ private void InitializeChromium()
137
+ {
138
+ var settings = new CefSettings();
139
+
140
+ settings.AcceptLanguageList = "ja-JP"; // どちらかでいい
141
+
142
+ Cef.Initialize(settings);
143
+ chromeBrowser = new ChromiumWebBrowser("https://www.nicovideo.jp/");
144
+
145
+ chromeBrowser.BrowserSettings.AcceptLanguageList = "ja-JP"; // どちらかでいい
146
+
147
+ Controls.Add(chromeBrowser);
148
+ chromeBrowser.Dock = DockStyle.Fill;
149
+ }
150
+ }
151
+ }
152
+ ```
153
+ `AcceptLanguageList = "ja-JP"`をどちらかに付ければ日本語になりました(両方つけてもいいですが)
154
+
155
+ かなり作りこんでおられるようですが、一旦当該記事のように**最小構成**で作ってみてどうなるかですね。
156
+ それでもダメな場合はChromeの設定等他の要因ということになりそうですが、ちょっとわかりそうにありません。