HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1201
SakuIEコンポーネントでHTML54未解決


Saku

リンク

2015/12/1(Tue) 14:29:27|NO.73359

IEコンポーネントでHTML5を表示させることは可能でしょうか?
UserAgentでやってもOKでしょうか?



この記事に返信する


inovia

リンク

2015/12/1(Tue) 14:56:31|NO.73360

UserAgentの書換ではHTML5には対応しません。
レジストリの書き換えが必要です。

「ieコンポ レジストリ」とかで検索すると色々出てくるかと思います。

※出先なので雑なレスですいません



inovia

リンク

2015/12/1(Tue) 23:51:23|NO.73367

投げっぱなしもあれなので。。。
以下のモジュールとサンプルを実行すると、IE11モードで動作するようになります。
(IE11がインストールされている場合)
昔書いたモノに若干手を加えただけなので、何かミスがあるかもです。。。

#module _Mod_Reg_ // // レジストリの読み書きモジュール // 削除や列挙機能はなし // #uselib "advapi32" #func RegQueryValueExA "RegQueryValueExA" int, str, int, int, int, int #func RegOpenKeyExA "RegOpenKeyExA" int, str, int, int, int #func RegCloseKey "RegCloseKey" int #func RegCreateKeyExA "RegCreateKeyExA" int, str, int, int, int, int, int, int, int #func RegSetValueExA "RegSetValueExA" int, str, int, int, int, int #define global HKEY_CLASSES_ROOT 0x80000000 #define global HKEY_CURRENT_USER 0x80000001 #define global HKEY_LOCAL_MACHINE 0x80000002 #define global HKEY_USERS 0x80000003 #define global HKEY_PERFORMANCE_DATA 0x80000004 #define global HKEY_CURRENT_CONFIG 0x80000005 #define global HKEY_DYN_DATA 0x80000006 #define KEY_QUERY_VALUE 0x0001 #define KEY_SET_VALUE 0x0002 #define REG_SZ 0x00000001 #define REG_DWORD 0x00000004 // // GetLastErrorRegistryAPI - 本モジュール内で呼び出されたAPIの戻り値を取得します // #defcfunc GetLastErrorRegistryAPI return lastRegAPIResult // // GetRegistryValueInt - 指定されたレジストリの値を数値型で読み込みます // // 第1引数: レジストリのサブツリー(ルートキー)を以下の定数で指定します //      HKEY_CLASSES_ROOT //      HKEY_CURRENT_USER //      HKEY_LOCAL_MACHINE //      HKEY_USERS //      HKEY_PERFORMANCE_DATA //      HKEY_CURRENT_CONFIG //      HKEY_DYN_DATA // が指定可能。 // 第2引数: レジストリのサブキーを文字列で指定します // 例:"SOFTWARE\\Microsoft\\Internet Explorer" // 第3引数: レジストリエントリを文字列で指定します // 例:"svcVersion" // 第4引数: 結果を受け取る変数を指定します // // 戻り値: マイナス値=エラー, それ以外=読込サイズ(bytes) // #deffunc GetRegistryValueInt int subTree, str subKey, str regEntry, var ret hRegKey = 0 ret = 0 RegOpenKeyExA subTree, subKey, 0, KEY_QUERY_VALUE, varptr(hRegKey) lastRegAPIResult = stat if 0 == hRegKey { return -1 } readBytes = 4 RegQueryValueExA hRegKey, regEntry, 0, 0, varptr(ret), varptr(readBytes) lastRegAPIResult = stat if lastRegAPIResult { RegCloseKey hRegKey return -2 } RegCloseKey hRegKey return readBytes // // GetRegistryValueStr - 指定されたレジストリの値を文字列型で読み込みます // // 第1引数: レジストリのサブツリー(ルートキー)を以下の定数で指定します //      HKEY_CLASSES_ROOT //      HKEY_CURRENT_USER //      HKEY_LOCAL_MACHINE //      HKEY_USERS //      HKEY_PERFORMANCE_DATA //      HKEY_CURRENT_CONFIG //      HKEY_DYN_DATA // が指定可能。 // 第2引数: レジストリのサブキーを文字列で指定します // 例:"SOFTWARE\\Microsoft\\Internet Explorer" // 第3引数: レジストリエントリを文字列で指定します // 例:"svcVersion" // 第4引数: 結果を受け取る変数を指定します // // 戻り値: マイナス値=エラー, それ以外=読込サイズ(bytes) // #deffunc GetRegistryValueStr int subTree, str subKey, str regEntry, var ret hRegKey = 0 sdim ret RegOpenKeyExA subTree, subKey, 0, KEY_QUERY_VALUE, varptr(hRegKey) lastRegAPIResult = stat if 0 == hRegKey { return -1 } // 必要なサイズを取得します readBytes = 0 RegQueryValueExA hRegKey, regEntry, 0, 0, 0, varptr(readBytes) lastRegAPIResult = stat if lastRegAPIResult { RegCloseKey hRegKey return -2 } if 0 == readBytes { RegCloseKey hRegKey return readBytes } sdim ret, readBytes + 1 RegQueryValueExA hRegKey, regEntry, 0, 0, varptr(ret), varptr(readBytes) lastRegAPIResult = stat if lastRegAPIResult { RegCloseKey hRegKey return -3 } RegCloseKey hRegKey return readBytes // // SetRegistryValueInt - 指定されたレジストリの値を数値型で書き込みます // // 第1引数: レジストリのサブツリー(ルートキー)を以下の定数で指定します //      HKEY_CLASSES_ROOT //      HKEY_CURRENT_USER //      HKEY_LOCAL_MACHINE //      HKEY_USERS //      HKEY_PERFORMANCE_DATA //      HKEY_CURRENT_CONFIG //      HKEY_DYN_DATA // が指定可能。 // 第2引数: レジストリのサブキーを文字列で指定します // 例:"SOFTWARE\\Microsoft\\Internet Explorer" // 第3引数: レジストリエントリを文字列で指定します // 例:"svcVersion" // 第4引数: 書き込む値(数値型) // // 戻り値: マイナス値=エラー, 0=成功 // #deffunc SetRegistryValueInt int subTree, str subKey, str regEntry, int value hRegKey = 0 RegCreateKeyExA subTree, subKey, 0, 0, 0, KEY_SET_VALUE, 0, varptr(hRegKey), 0 lastRegAPIResult = stat if 0 == hRegKey { return -1 } _value = value RegSetValueExA hRegKey, regEntry, 0, REG_DWORD, varptr(_value), 4 lastRegAPIResult = stat if lastRegAPIResult { RegCloseKey hRegKey return -2 } RegCloseKey hRegKey return 0 // // SetRegistryValueStr - 指定されたレジストリの値を文字列型で書き込みます // // 第1引数: レジストリのサブツリー(ルートキー)を以下の定数で指定します //      HKEY_CLASSES_ROOT //      HKEY_CURRENT_USER //      HKEY_LOCAL_MACHINE //      HKEY_USERS //      HKEY_PERFORMANCE_DATA //      HKEY_CURRENT_CONFIG //      HKEY_DYN_DATA // が指定可能。 // 第2引数: レジストリのサブキーを文字列で指定します // 例:"SOFTWARE\\Microsoft\\Internet Explorer" // 第3引数: レジストリエントリを文字列で指定します // 例:"svcVersion" // 第4引数: 書き込む値(文字列型) // // 戻り値: マイナス値=エラー, 0=成功 // #deffunc SetRegistryValueStr int subTree, str subKey, str regEntry, str value hRegKey = 0 RegCreateKeyExA subTree, subKey, 0, 0, 0, KEY_SET_VALUE, 0, varptr(hRegKey), 0 lastRegAPIResult = stat if 0 == hRegKey { return -1 } strValueSize = strlen(value) + 1 sdim _value, strValueSize _value = value RegSetValueExA hRegKey, regEntry, 0, REG_SZ, varptr(_value), strValueSize lastRegAPIResult = stat if lastRegAPIResult { RegCloseKey hRegKey return -2 } RegCloseKey hRegKey return 0 #global #module _mod_IE_Ver_ #uselib "kernel32" #func GetModuleFileNameA "GetModuleFileNameA" int, int, int #define FEATURE_BROWSER_EMULATION "SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION" #define FEATURE_GPU_RENDERING "SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_GPU_RENDERING" #define FEATURE_USE_LEGACY_JSCRIPT "SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_USE_LEGACY_JSCRIPT" // IEのバージョンを取得する関数 #defcfunc GetIEVersion GetRegistryValueStr HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer", "svcVersion", version if stat <= 0 { GetRegistryValueStr HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Internet Explorer", "Version", version } split version, ".", ieVer if 0 < stat { return ieVer(0) } return "" // 現在のプロセス名を取得する関数 #defcfunc GetProcessName sdim exe_path, 260 + 1 GetModuleFileNameA 0, varptr(exe_path), 260 return getpath(exe_path, 8) // // SetIEConfigEmulation // 指定されたIEのバージョンをエミュレーションするよう設定します。 // // 第1引数: IEのバージョンを文字列で指定します("9","10","11"など) // GetIEVersion()関数を利用すると、インストールされているIEのバージョンを指定できます // 第2引数: 対象の実行ファイルの名前を指定します // GetProcessName()関数を利用すると、実行中のプロセス名を指定できます // 戻り値: マイナス値=エラー, 0=成功 // #deffunc SetIEConfigEmulation str ieVersion, str exeName SetRegistryValueInt HKEY_CURRENT_USER, FEATURE_BROWSER_EMULATION, exeName, int(ieVersion)*1000 return stat // // SetIEConfigGPURendering // GPUを使用してレンダリングするよう設定します。 // // 第1引数: 0 = GPUを使用しない // 1 = GPUを使用する // 第2引数: 対象の実行ファイルの名前を指定します // GetProcessName()関数を利用すると、実行中のプロセス名を指定できます // 戻り値: マイナス値=エラー, 0=成功 // #deffunc SetIEConfigGPURendering int flag, str exeName SetRegistryValueInt HKEY_CURRENT_USER, FEATURE_GPU_RENDERING, exeName, flag return stat // // SetIEConfigLegacyJScript // 古いJavaScriptエンジンを使用するよう設定します。 // // 第1引数: 0 = 古いJavaScriptエンジンを使用しない(Chakraエンジン) // 1 = 古いJavaScriptエンジンを使用する(JScriptエンジン) // 第2引数: 対象の実行ファイルの名前を指定します // GetProcessName()関数を利用すると、実行中のプロセス名を指定できます // 戻り値: マイナス値=エラー, 0=成功 // #deffunc SetIEConfigLegacyJScript int flag, str exeName SetRegistryValueInt HKEY_CURRENT_USER, FEATURE_USE_LEGACY_JSCRIPT, exeName, flag return stat #global // 以下サンプル mes "IEのバージョン:" + GetIEVersion() mes "現在のプロセス名:" + GetProcessName() // インストールされているバージョンをサポートするように設定する // もし、IE11が入っている場合は、そのバージョンをサポートします。 SetIEConfigEmulation GetIEVersion(), GetProcessName() // GPUを利用したレンダリングを行う SetIEConfigGPURendering 1, GetProcessName() // 古いJavaScriptエンジンを使用しない(Chakraエンジン) SetIEConfigLegacyJScript 0, GetProcessName()



Saku

リンク

2015/12/2(Wed) 06:21:55|NO.73369

inoviaさんありがとうございます!
これって、管理者権限は必要でしょうか?
教えてもらえると幸いです。



inovia

リンク

2015/12/2(Wed) 07:12:23|NO.73370

レジストリの書き込みはHKEY_CURRENT_USER配下なので、管理者権限は要らないかと。
また、HKEY_LOCAL_MACHINE配下は読みだけなので大丈夫かと。

一応手元の標準ユーザ&UACオンな環境で試しましたが、
レジストリの読み書きは上手くいってますね。



ONION software Copyright 1997-2021(c) All rights reserved.