it技術:dotnet:cefsharp
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
it技術:dotnet:cefsharp [2018/12/14 18:30] – [パネル配下にブラウザをセット] yajuadmin | it技術:dotnet:cefsharp [2019/03/16 21:16] – [マウスカーソルの位置とクリックに反応する位置がずれる] yajuadmin | ||
---|---|---|---|
行 25: | 行 25: | ||
Any CPUで32bit優先にした場合(32bit優先とはARMのWindows環境でも動作可能となる)\\ | Any CPUで32bit優先にした場合(32bit優先とはARMのWindows環境でも動作可能となる)\\ | ||
[[https:// | [[https:// | ||
+ | |||
+ | ===== ブラウザ言語を変更する ===== | ||
+ | ひらがなと漢字が混在していた場合、ひらがなのみ太いなどのフォント表示(中国語っぽい)がされてしまう。\\ | ||
+ | 原因はロケールが違うため、言語を日本語に変更する。\\ | ||
+ | [[https:// | ||
+ | |||
+ | <code csharp> | ||
+ | CefSettings settings = new CefSettings(); | ||
+ | settings.Locale = " | ||
+ | settings.AcceptLanguageList = " | ||
+ | Cef.Initialize(settings); | ||
+ | </ | ||
+ | |||
+ | または、OSのカルチャーを取得してセットする。 | ||
+ | <code csharp> | ||
+ | CefSettings settings = new CefSettings(); | ||
+ | settings.Locale = System.Globalization.CultureInfo.CurrentCulture.Parent.ToString(); | ||
+ | settings.AcceptLanguageList = System.Globalization.CultureInfo.CurrentCulture.Name; | ||
+ | Cef.Initialize(settings); | ||
+ | </ | ||
+ | |||
+ | ===== debug.logを出力しない ===== | ||
+ | LogSeverity プロパティを無効にする。 | ||
+ | <code csharp> | ||
+ | CefSettings settings = new CefSettings(); | ||
+ | settings.LogSeverity = LogSeverity.Disable; | ||
+ | Cef.Initialize(settings); | ||
+ | </ | ||
+ | |||
+ | ===== GPUCacheやblob_storageがデスクトップに作成される ===== | ||
+ | CefSharpを使用したアプリケーションをデスクトップのショートカットから実行した場合\\ | ||
+ | ショートカットの作業フォルダが空だった場合、GPUCacheがblob_storageフォルダがデスクトップに作成されてしまう。\\ | ||
+ | 対応として作業フォルダを指定することで、作業フォルダ側に作成される。 | ||
+ | |||
+ | ショートカットの作業フォルダ対応ではなくプログラムで対応する場合\\ | ||
+ | カレントフォルダを設定しただけでは、GPUCacheフォルダはカレントフォルダに作成されるが、blob_storageフォルダはデスクトップに作成されてしまう。\\ | ||
+ | 対応として、CefSettings.UserDataPath にカレントフォルダを指定する必要がある。 | ||
+ | |||
+ | <code csharp> | ||
+ | // カレントディレクトリをアプリケーション起動パスに設定する | ||
+ | string appPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); | ||
+ | Directory.SetCurrentDirectory(appPath); | ||
+ | CefSettings settings = new CefSettings(); | ||
+ | settings.UserDataPath = appPath; | ||
+ | Cef.Initialize(settings); | ||
+ | </ | ||
+ | |||
+ | ===== Cef.Initializeの設定は1回のみ ===== | ||
+ | Cef.Initializeの設定は1回のみで、new ChromiumWebBrowser する前に設定する。\\ | ||
+ | Cef.Initialize したかどうかは、Cef.IsInitialized で判断(false: | ||
+ | [[https:// | ||
===== パネル配下にブラウザをセット ===== | ===== パネル配下にブラウザをセット ===== | ||
+ | フォームにToolboxを配置したあったので、パネルを用意して配下にブラウザをセットした。 | ||
+ | |||
<code csharp> | <code csharp> | ||
browser = new ChromiumWebBrowser(" | browser = new ChromiumWebBrowser(" | ||
行 61: | 行 114: | ||
<code csharp> | <code csharp> | ||
this.Browser = new ChromiumWebBrowser(); | this.Browser = new ChromiumWebBrowser(); | ||
- | this.Browser.Load(" | + | this.Browser.Load(" |
</ | </ | ||
行 70: | 行 123: | ||
<code csharp> | <code csharp> | ||
var browser = new ChromiumWebBrowser(); | var browser = new ChromiumWebBrowser(); | ||
- | browser.Address = " | + | browser.Address = " |
</ | </ | ||
行 116: | 行 169: | ||
===== HTML要素の値を取得する ===== | ===== HTML要素の値を取得する ===== | ||
Javascriptで操作させて取得する。\\ | Javascriptで操作させて取得する。\\ | ||
- | ExecuteScriptAsyncメソッドで、Javascriptを実行する。 | + | ExecuteScriptAsyncメソッドで、Javascriptを実行する。\\ |
[[https:// | [[https:// | ||
行 227: | 行 280: | ||
</ | </ | ||
+ | ===== FAQ ===== | ||
+ | ==== マウスカーソルの位置とクリックに反応する位置がずれる ==== | ||
+ | 参照:[[http:// | ||
+ | |||
+ | === 現象 === | ||
+ | 一部のHigh-DPI 環境のPCでクリックする位置が10ドット上くらいでないと反応しない現象があった。\\ | ||
+ | EXEファイルから直接起動すると現象が発生しないが、デスクトップのショートカットやスタートアップから起動するとこの現象が発生する。 | ||
+ | === 対応 === | ||
+ | ショートカットのプロパティの互換性タブにある「高DPIスケール設定の上書き」の「高いDPIスケールの動作を上書きします。」にチェックを付ける。\\ | ||
+ | Windows 7では互換性タブにある「設定」の「高DPI設定では画面のスケーリングを無効にする」にチェックを付ける。 | ||
+ | |||
+ | === プログラム対応 === | ||
+ | 高DPI対応するために、app.manifest ファイルを追加して、dpiAwareをtrueに設定する。\\ | ||
+ | manifest ファイルの配布は不要。\\ | ||
+ | | ||
+ | |||
+ | 「dpiAware」の設定を「true」または「true/ | ||
+ | 違いは下記参照\\ | ||
+ | [[http:// | ||
+ | |||
+ | <code xml app.manifest> | ||
+ | <?xml version=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Cef.EnableHighDPISupport()メソッドを追加する。 | ||
+ | |||
+ | < | ||
+ | Cef.EnableHighDPISupport(); | ||
+ | Cef.Initialize(setting); | ||
+ | </ |
it技術/dotnet/cefsharp.txt · 最終更新: 2019/03/16 21:18 by yajuadmin