回答編集履歴

2

見直しキャンペーン中

2023/07/22 07:04

投稿

TN8001
TN8001

スコア9862

test CHANGED
@@ -1,311 +1,156 @@
1
1
  当方では問題なく動きますねぇ。AnyCPU対応法が違うのでしょうか?
2
-
3
2
  3パターン中推奨っぽい
4
-
5
3
  [cefsharp/CefSharp.MinimalExample at demo/anycpu](https://github.com/cefsharp/CefSharp.MinimalExample/tree/demo/anycpu)
6
-
7
4
  の通りにやりました。
8
5
 
9
-
10
-
11
- Form1.cs
6
+ ```cs:Form1.cs
12
-
13
- ```C#
14
-
15
7
  using System.Windows.Forms;
16
-
17
8
  using CefSharp.WinForms;
18
9
 
10
+ namespace Questions264430
11
+ {
12
+ public partial class Form1 : Form
13
+ {
14
+ public Form1()
15
+ {
16
+ InitializeComponent();
19
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;
20
34
 
21
35
  namespace Questions264430
22
-
23
36
  {
24
-
37
+ // https://github.com/cefsharp/CefSharp.MinimalExample/blob/demo/anycpu/CefSharp.MinimalExample.WinForms/Program.cs
25
- public partial class Form1 : Form
38
+ internal class Program
26
-
27
39
  {
28
-
40
+ [STAThread]
29
- public Form1()
41
+ public static void Main()
30
-
31
42
  {
32
-
33
- InitializeComponent();
34
-
35
-
36
-
37
- var browser = new ChromiumWebBrowser("https://www.nicovideo.jp/") { Dock = DockStyle.Fill, };
38
-
39
- browser.BrowserSettings.AcceptLanguageList = "ja-JP";
43
+ AppDomain.CurrentDomain.AssemblyResolve += Resolver;
40
-
41
- Controls.Add(browser);
44
+ LoadApp();
42
-
43
45
  }
44
46
 
45
- }
46
-
47
- }
48
-
49
- ```
50
-
51
- Program.cs
52
-
53
- ```C#
54
-
55
- using System;
56
-
57
- using System.IO;
58
-
59
- using System.Reflection;
60
-
61
- using System.Runtime.CompilerServices;
47
+ [MethodImpl(MethodImplOptions.NoInlining)]
62
-
63
- using System.Windows.Forms;
64
-
65
- using CefSharp;
66
-
67
- using CefSharp.WinForms;
68
-
69
-
70
-
71
- namespace Questions264430
72
-
73
- {
74
-
75
- // https://github.com/cefsharp/CefSharp.MinimalExample/blob/demo/anycpu/CefSharp.MinimalExample.WinForms/Program.cs
76
-
77
- internal class Program
78
-
79
- {
80
-
81
- [STAThread]
82
-
83
- public static void Main()
48
+ private static void LoadApp()
84
-
85
49
  {
86
-
50
+ var settings = new CefSettings();
51
+ Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
87
- AppDomain.CurrentDomain.AssemblyResolve += Resolver;
52
+ Application.Run(new Form1());
88
-
89
- LoadApp();
90
-
91
53
  }
92
54
 
93
-
94
-
95
- [MethodImpl(MethodImplOptions.NoInlining)]
96
-
97
- private static void LoadApp()
55
+ private static Assembly Resolver(object sender, ResolveEventArgs args)
98
-
99
56
  {
100
-
101
- var settings = new CefSettings();
102
-
103
- Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
104
-
105
- Application.Run(new Form1());
106
-
107
- }
108
-
109
-
110
-
111
- private static Assembly Resolver(object sender, ResolveEventArgs args)
112
-
113
- {
114
-
115
57
  if(args.Name.StartsWith("CefSharp"))
116
-
117
58
  {
118
-
119
59
  var assemblyName = args.Name.Split(new[] { ',' }, 2)[0] + ".dll";
120
-
121
60
  var archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, Environment.Is64BitProcess ? "x64" : "x86", assemblyName);
122
61
 
123
-
124
-
125
62
  return File.Exists(archSpecificPath) ? Assembly.LoadFile(archSpecificPath) : null;
126
-
127
63
  }
128
64
 
129
-
130
-
131
65
  return null;
132
-
133
66
  }
134
-
135
67
  }
136
-
137
68
  }
138
-
139
69
  ```
140
-
141
70
  ![アプリ画像](2fa8c4388de16d0b7dd1235598255006.png)
142
-
143
-
144
71
 
145
72
  ---
146
73
 
147
-
148
-
149
74
  前々回の回答で`WebView2`に言及したので、こちらも試してみました。
150
75
 
151
-
152
-
153
76
  新しいEdgeが入っていれば何の設定もせずに、上の画像と同じ状態になりました。
154
-
155
77
  プレビューが外れて同梱方法等が整備されれば、第一候補になると思います。
156
-
157
78
  ブラウザコントロールはどれもまともに使ったことがないので、細かい使用感はわかりませんが^^;
158
79
 
159
-
160
-
161
80
  [Microsoft Edge WebView 2 Windows フォームアプリ - Microsoft Edge Development | Microsoft Docs](https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms)
162
-
163
81
  Canaryを入れろと書いてありますが、Devでも動きました(Beta・ノーマルでは動きませんでした)
164
82
 
165
-
166
-
167
- ```C#
83
+ ```cs
168
-
169
84
  using System;
170
-
171
85
  using System.Windows.Forms;
172
-
173
86
  using Microsoft.Web.WebView2.WinForms;
174
87
 
175
-
176
-
177
88
  namespace WebView2Test
178
-
179
89
  {
180
-
181
90
  public partial class Form1 : Form
182
-
183
91
  {
184
-
185
92
  public Form1()
186
-
187
93
  {
188
-
189
94
  InitializeComponent();
190
-
191
95
  var webView2 = new WebView2 { Dock = DockStyle.Fill, Source = new Uri("https://www.nicovideo.jp/"), };
192
-
193
96
  Controls.Add(webView2);
194
-
195
97
  }
196
-
197
98
  }
198
-
199
99
  }
200
-
201
100
  ```
202
101
 
203
102
  ---
204
103
 
205
-
206
-
207
104
  追記
208
105
 
209
-
210
-
211
106
  [WinFormsでCefSharpをAnyCPU構成で使う方法 | おてて動かそう](https://takumi-oda.com/blog/2019/12/09/post-1017/)
212
-
213
107
  こちらは32bitを明示するパターンですね。
214
108
 
215
-
216
-
217
109
  本家でいうとこれになりますね。
218
-
219
110
  [CefSharp.MinimalExample/CefSharp.MinimalExample.WinForms at demo/anycpuprefer32bit · cefsharp/CefSharp.MinimalExample](https://github.com/cefsharp/CefSharp.MinimalExample/tree/demo/anycpuprefer32bit/CefSharp.MinimalExample.WinForms)
220
111
 
221
-
222
-
223
112
  念のため自分で同じように作ったものと、
224
-
225
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)
226
-
227
114
  をクローンしたもの両方でテストしました。
228
115
 
229
-
230
-
231
- ```C#
116
+ ```cs
232
-
233
117
  using System.Windows.Forms;
234
-
235
118
  using CefSharp;
236
-
237
119
  using CefSharp.WinForms;
238
120
 
239
-
240
-
241
121
  namespace WinFormsCefSharpSample
242
-
243
122
  {
244
-
245
123
  public partial class Form1 : Form
246
-
247
124
  {
248
-
249
125
  public Form1()
250
-
251
126
  {
252
-
253
127
  InitializeComponent();
254
-
255
128
  InitializeChromium();
256
-
129
+ }
130
+ private void Form1_FormClosing(object sender, FormClosingEventArgs e)
131
+ {
132
+ Cef.Shutdown();
257
133
  }
258
134
 
259
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
135
+ private ChromiumWebBrowser chromeBrowser;
260
-
136
+ private void InitializeChromium()
261
137
  {
262
-
263
- Cef.Shutdown();
264
-
265
- }
266
-
267
-
268
-
269
- private ChromiumWebBrowser chromeBrowser;
270
-
271
- private void InitializeChromium()
272
-
273
- {
274
-
275
138
  var settings = new CefSettings();
276
-
277
-
278
139
 
279
140
  settings.AcceptLanguageList = "ja-JP"; // どちらかでいい
280
141
 
281
-
282
-
283
142
  Cef.Initialize(settings);
284
-
285
143
  chromeBrowser = new ChromiumWebBrowser("https://www.nicovideo.jp/");
286
-
287
-
288
144
 
289
145
  chromeBrowser.BrowserSettings.AcceptLanguageList = "ja-JP"; // どちらかでいい
290
146
 
291
-
292
-
293
147
  Controls.Add(chromeBrowser);
294
-
295
148
  chromeBrowser.Dock = DockStyle.Fill;
296
-
297
149
  }
298
-
299
150
  }
300
-
301
151
  }
302
-
303
152
  ```
304
-
305
153
  `AcceptLanguageList = "ja-JP"`をどちらかに付ければ日本語になりました(両方つけてもいいですが)
306
154
 
307
-
308
-
309
155
  かなり作りこんでおられるようですが、一旦当該記事のように**最小構成**で作ってみてどうなるかですね。
310
-
311
156
  それでもダメな場合はChromeの設定等他の要因ということになりそうですが、ちょっとわかりそうにありません。

1

追記 32bit

2020/05/27 09:27

投稿

TN8001
TN8001

スコア9862

test CHANGED
@@ -199,3 +199,113 @@
199
199
  }
200
200
 
201
201
  ```
202
+
203
+ ---
204
+
205
+
206
+
207
+ 追記
208
+
209
+
210
+
211
+ [WinFormsでCefSharpをAnyCPU構成で使う方法 | おてて動かそう](https://takumi-oda.com/blog/2019/12/09/post-1017/)
212
+
213
+ こちらは32bitを明示するパターンですね。
214
+
215
+
216
+
217
+ 本家でいうとこれになりますね。
218
+
219
+ [CefSharp.MinimalExample/CefSharp.MinimalExample.WinForms at demo/anycpuprefer32bit · cefsharp/CefSharp.MinimalExample](https://github.com/cefsharp/CefSharp.MinimalExample/tree/demo/anycpuprefer32bit/CefSharp.MinimalExample.WinForms)
220
+
221
+
222
+
223
+ 念のため自分で同じように作ったものと、
224
+
225
+ [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)
226
+
227
+ をクローンしたもの両方でテストしました。
228
+
229
+
230
+
231
+ ```C#
232
+
233
+ using System.Windows.Forms;
234
+
235
+ using CefSharp;
236
+
237
+ using CefSharp.WinForms;
238
+
239
+
240
+
241
+ namespace WinFormsCefSharpSample
242
+
243
+ {
244
+
245
+ public partial class Form1 : Form
246
+
247
+ {
248
+
249
+ public Form1()
250
+
251
+ {
252
+
253
+ InitializeComponent();
254
+
255
+ InitializeChromium();
256
+
257
+ }
258
+
259
+ private void Form1_FormClosing(object sender, FormClosingEventArgs e)
260
+
261
+ {
262
+
263
+ Cef.Shutdown();
264
+
265
+ }
266
+
267
+
268
+
269
+ private ChromiumWebBrowser chromeBrowser;
270
+
271
+ private void InitializeChromium()
272
+
273
+ {
274
+
275
+ var settings = new CefSettings();
276
+
277
+
278
+
279
+ settings.AcceptLanguageList = "ja-JP"; // どちらかでいい
280
+
281
+
282
+
283
+ Cef.Initialize(settings);
284
+
285
+ chromeBrowser = new ChromiumWebBrowser("https://www.nicovideo.jp/");
286
+
287
+
288
+
289
+ chromeBrowser.BrowserSettings.AcceptLanguageList = "ja-JP"; // どちらかでいい
290
+
291
+
292
+
293
+ Controls.Add(chromeBrowser);
294
+
295
+ chromeBrowser.Dock = DockStyle.Fill;
296
+
297
+ }
298
+
299
+ }
300
+
301
+ }
302
+
303
+ ```
304
+
305
+ `AcceptLanguageList = "ja-JP"`をどちらかに付ければ日本語になりました(両方つけてもいいですが)
306
+
307
+
308
+
309
+ かなり作りこんでおられるようですが、一旦当該記事のように**最小構成**で作ってみてどうなるかですね。
310
+
311
+ それでもダメな場合はChromeの設定等他の要因ということになりそうですが、ちょっとわかりそうにありません。