スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 

64ビット環境でスクリプトを実行する

64ビットネイティブ環境ではScriptControlが使用できません。代わりに以下の方法があります。

1.IEコンポーネントを使用

htmlを表示するIEコンポーネントのスクリプトタグを使用すれば、スクリプトが実行できます。
メリットはIEの機能(alertやprompt等)が使用できます。また、IE9以降の場合はChakraという高速なスクリプトエンジンを使用できます。
デメリットはIEコンポーネントの分だけ重くなります。

2.htmlfile (CLSID_HTMLDocument)を使用

上記のIEコンポーネントのhtml解析の部分を取り出した感じです。これもIE9以降の場合はChakraという高速なスクリプトエンジンを使用できます。
IE11からは標準化の流れでwindow.execScriptが廃止されているので注意。

3.IActiveScriptを使用

ScriptControlの内部で使っていると思われるIAcriveScriptで直接実行させることもできます。この方法は上記の2つの方法より細かい指定ができます。

ScriptControl.LanguageはCLSIDFromProgIDで言語名からCLSIDを作成し、CoCreateInstanceでIActiveScriptを作成します。Chakraという高速なスクリプトエンジンを使用する場合はCLSIDFromProgIDで無くChakraのCLSIDを用意する必要があります。

ScriptControl.AddCodeはIAcriveScriptSite::GetItemInfoをpstrNameに追加するオブジェクト名が来た際にppiunkItemにオブジェクトを返すように実装し、IActiveScript->AddNamedItemでオブジェクト名を通知します。

ScriptControl.AddCodeはIActiveScriptParseをIActiveScriptからQueryInterfaceして、ParseScriptTextします。

詳しくはTablacus Exploerのソースをご覧ください。

2番目のCLSID_HTMLDocumentはコメントになっていますが、3つの方法ともあります。
スポンサーサイト
 

コメント

コメントの投稿

  • URL
  • コメント内容
  • password
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL: http://gakana.blog34.fc2.com/tb.php/71-5480cb93
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。