回答編集履歴

1

見直しキャンペーン中

2023/07/21 09:10

投稿

TN8001
TN8001

スコア9884

test CHANGED
@@ -1,111 +1,56 @@
1
1
  スキームハンドラーでやるのが正攻法のようです(全然わかっていませんが^^;
2
-
3
2
  [Scheme Handler · cefsharp/CefSharp Wiki](https://github.com/cefsharp/CefSharp/wiki/General-Usage#scheme-handler)
4
3
 
5
-
6
-
7
4
  * 引数なしの`new ChromiumWebBrowser()`はもう旧型式らしいので、デザイナで張り付けずコードで生成する
8
-
9
5
  * `LoadHtml`での読み込みでなく`index.html`を作成する
10
-
11
6
  * `index.html`では`<script src="jquery-3.3.1.min.js"></script>`のように記述する
12
7
 
13
-
14
-
15
8
  以上で当方では想定通りに動きました(exeと同じフォルダにhtml・js)
16
-
17
9
  文字列から読む方法はわかりませんでした。
18
10
 
19
-
20
-
21
- ```C#
11
+ ```cs
22
-
23
12
  using System.Windows.Forms;
24
-
25
13
  using CefSharp;
26
-
27
14
  using CefSharp.SchemeHandler;
28
-
29
15
  using CefSharp.WinForms;
30
16
 
31
-
32
-
33
17
  namespace Questions249641
34
-
35
18
  {
36
-
37
19
  public partial class Form1 : Form
38
-
39
20
  {
40
-
41
21
  private readonly ChromiumWebBrowser chromiumWebBrowser1;
42
22
 
43
-
44
-
45
23
  public Form1()
46
-
47
24
  {
48
-
49
25
  InitializeComponent();
50
26
 
51
-
52
-
53
27
  var settings = new CefSettings();
54
-
55
28
  settings.RegisterScheme(new CefCustomScheme
56
-
57
29
  {
58
-
59
30
  SchemeName = "localfolder",
60
-
61
31
  DomainName = "cefsharp",
62
-
63
32
  SchemeHandlerFactory = new FolderSchemeHandlerFactory(
64
-
65
33
  rootFolder: Application.StartupPath,
66
-
67
34
  hostName: "cefsharp",
68
-
69
35
  defaultPage: "index.html")
70
-
71
36
  });
72
-
73
-
74
37
 
75
38
  Cef.Initialize(settings);
76
39
 
77
-
78
-
79
40
  CefSharpSettings.LegacyJavascriptBindingEnabled = true;
80
-
81
41
  chromiumWebBrowser1 = new ChromiumWebBrowser("localfolder://cefsharp/");
82
-
83
42
  chromiumWebBrowser1.JavascriptObjectRepository.Register("objectForScripting", new ObjectForScriptiing(), false);
84
-
85
43
 
86
-
87
44
  Controls.Add(chromiumWebBrowser1);
88
-
89
45
  chromiumWebBrowser1.Dock = DockStyle.Fill;
90
-
91
46
  }
92
-
93
-
94
47
 
95
48
  private void Form1_FormClosing(object sender, FormClosingEventArgs e) => Cef.Shutdown();
96
49
 
97
-
98
-
99
50
  public class ObjectForScriptiing
100
-
101
51
  {
102
-
103
52
  public void showMessage() => MessageBox.Show("Message", "Title");
104
-
105
53
  }
106
-
107
54
  }
108
-
109
55
  }
110
-
111
56
  ```