HTMLメニュー内でのスクリプト使用について
- ■ IE11以降の環境下のHTMLメニュー
- IE11以降からはVBScriptがサポートされなくなったため、IE10以前の互換モードでの実行が必要になります。
- 対応策@ 互換モードで動作させる
- メニューhtmlの<HEAD>セクションに
<meta http-equiv="X-UA-Compatible" content="IE=10">
を追加する事により、HTMLメニュー内のVBScriptはそのままで動作します。
- 対応策A JScriptへの移行
- 今後、新規にHTMLメニューにスクリプトを組み込む場合は、JScript(JavaScript)で記述する事をおすすめします。
JScript(JavaScript)の使用について
ちなみに、PC-MAPPINGのコマンドライン(クイックバー等からも含む)から直接起動する単体のVBSファイルは、IE11環境でも問題なく(修正する事なく)動作します。
- ■ 「Windows セキュリティの警告」ウィンドウ
- HTMLメニューを実行すると、「Windows セキュリティの警告」ウィンドウと表示される場合があります。
HTMLファイル内のスクリプトで、PC-MappingやMicrosoft Excelなど、オートメーションオブジェクトへの参照を有効にするため、
var pcm = new ActiveXObject("Pcm.App");
のようにActiveXObject()を実行するには、Browserから実行するための許可が必要であり、警告メッセージを表示するか、ローカルイントラネットゾーンの設定を変更する必要があります。
こちらでは、以下の3パターンを確認しています。
なお、PC-MappingオートメーションのActiveXコントロールを参照する
var pcm = new ActiveXObject("Pcm.App");
以外のActiveXコントロールの例として
var fso = new ActiveXObject("Scripting.FileSystemObject");
を使用しています。
【パターン1】
var pcm = new ActiveXObject("Pcm.App");
var fso = new ActiveXObject("Scripting.FileSystemObject");
のどちらを実行しても、「Windows セキュリティの警告」ウィンドウと表示される。
【パターン2】
var pcm = new ActiveXObject("Pcm.App");
を実行すると、「Windows セキュリティの警告」ウィンドウは表示されないが、
var fso = new ActiveXObject("Scripting.FileSystemObject");
を実行すると、「Windows セキュリティの警告」ウィンドウと表示される。
【パターン3】
var pcm = new ActiveXObject("Pcm.App");
var fso = new ActiveXObject("Scripting.FileSystemObject");
のどちらを実行しても、「Windows セキュリティの警告」ウィンドウは表示されない。
以下に、パターンの確認するためのサンプルと操作方法を記載します。
- ■ サンプル
- サンプル[script35.zip(約28KB)]をダウンロードする
| Sample.pcm | :サンプルプロジェクト |
| Sample.html | :HTMLメニュー(JScript) |
| Sample2.html | :新型HTMLメニュー(JScript) |
| Sample2.js | :スクリプト |
【ダウンロードサンプルの使用上の注意点】
ダウンロードした圧縮ファイルから解凍されたファイルには「セキュリティブロック」がかかります。
「セキュリティブロック」がかかった状態では、スクリプトが動作しない可能性があります。
解凍したファイルをマウス右クリックし、メニューから「プロパティ」をクリックすると、「全般」パネルの下部に「セキュリティ:」欄が表示されますので、「許可する」チェックボックスをONにして下さい。
- ■ 準備
-
- ダウンロードしたファイルを「C:\sample\script35」へ解凍します。
- PC-Mappingを起動します。
- [ワークスペース]-[コマンド]-[コマンドラインバー]メニューを実行し、コマンドラインバーを表示します。
- ■ 操作方法
-
- [ホーム]-[ファイル]-[開く]メニューを実行し、「C:\sample\script35\Sample.pcm」を開きます。
- コマンドラインバーに「Htmlmenu△C:\sample\script35\sample.html△-modeless;」(△は半角スペース)と記述します。
- 実行すると、「sample」ウィンドウが表示されます。
- var pcm = new ActiveXObject("Pcm.App");
を実行している【参照】ボタンをクリックすると、
(A):「Windows セキュリティの警告」ウィンドウと表示されます。【はい】ボタンをクリックします。
(B):「Windows セキュリティの警告」ウィンドウと表示されません。
- 「開く」ウィンドウが表示されます。
「C:\sample\script35\sample.pcm」を選択し、【開く】ボタンをクリックします。
- 一度、「Windows セキュリティの警告」ウィンドウで【はい】ボタンをクリックすると、次に「Windows セキュリティの警告」ウィンドウは表示されなくなります。
よって、4.で(A)だった場合は、「sample」ウィンドウを閉じ、2.を行って「sample」ウィンドウを開き直して下さい。
- var fso = new ActiveXObject("Scripting.FileSystemObject");
を実行している【確認】ボタンをクリックすると、
(C):「Windows セキュリティの警告」ウィンドウと表示されます。【はい】ボタンをクリックします。
(D):「Windows セキュリティの警告」ウィンドウと表示されません。
- 「「C:\sample\script35\sample.pcm」ファイルはあります。」または「「」ファイルはありません。」メッセージウィンドウが表示されます。
- 【OK】ボタンをクリックします。
- 【閉じる】ボタンをクリックし、「sample」ウィンドウを閉じます。
(A)(C)であれば【パターン1】、(B)(C)であれば【パターン2】、(B)(D)であれば【パターン3】となります。
以下に、「Windows セキュリティの警告」ウィンドウを表示しない方法について記載します。
- ■ スクリプトのコマンド化
- 【パターン2】に有効な処理です。
HTML内のスクリプトで実行している
var fso = new ActiveXObject("Scripting.FileSystemObject");
をPC-Mapping側で実行します。
- [プロジェクト]-[プロジェクト設定]-[プロジェクトエキスパート]を実行します。
- 「スクリプト」パネルを表示します。
- ここにスクリプトを記述することで、コマンドとして実行する事ができます。
詳しくは、イベント駆動型スクリプティングH [スクリプトをコマンドとして実行] をご覧下さい。
- コマンド「pcmFileExists」で実行されるように、「Windows セキュリティの警告」ウィンドウが表示される原因の
var fso = new ActiveXObject("Scripting.FileSystemObject");
を記述、処理しています。このサンプルに戻り値はありませんが、必要な場合は、アプリケーションクラス(Pcm.AppClass):ParamStringプロパティ、ParamStringArrayプロパティなどを使用し、戻り値の受け渡しは可能です。
- 【OK】ボタンをクリックし、「スクリプト」パネルを閉じます。
- メモ帳等のエディターで「C:\sample\script35\sample.html」を開きます。
- 39行目でアプリケーションクラス(Pcm.AppClass):Docmd()メソッドを使用し、【確認2】ボタンクリックすると、コマンド「pcmFileExists」を実行します。
- 「■ 操作方法」1.〜6.まで操作を行い、「sample」ウィンドウの【確認2】ボタンをクリックします。
- すると、「Windows セキュリティの警告」ウィンドウは表示されず、「「C:\sample\script35\sample.pcm」ファイルはあります。」メッセージウィンドウが表示されます。
- ■ 新型HTMLメニュー
- 【パターン1】、【パターン2】に有効な処理です。
「Microsoft Edge WebView2」を使用する事で、PC-MappingオートメーションをPC-MAPPING内で直接実行する事ができます。
よって、「Windows セキュリティの警告」ウィンドウは表示されません。
新型HTMLメニューを実行するための設定については、【MAPCOM WORLD TOPICS】新型HTMLメニューへの移行の準備(2023.03.13更新) をご覧下さい。
- コマンドラインバーに「Htmlmenu△C:\sample\script35\sample2.html△-3△-modeless△-wndtop;」(△は半角スペース)と記述します。
- 実行すると、「sample2」ウィンドウが表示されます。
- 【参照】ボタンをクリックすると、「Windows セキュリティの警告」ウィンドウは表示されず、「開く」ウィンドウが表示されます。
「C:\sample\script35\sample.pcm」を選択し、【開く】ボタンをクリックします。
- 【確認】ボタンをクリックすると、「Windows セキュリティの警告」ウィンドウは表示されず、「「C:\sample\script35\sample.pcm」ファイルはあります。」メッセージウィンドウが表示されます。
- 【OK】ボタンをクリックします。
- 【閉じる】ボタンをクリックし、「sample2」ウィンドウを閉じます。
- ■ セキュリティの設定
- 【パターン1】、【パターン2】に有効な処理ですが、保護モードは解除され、セキュリティ上の問題が発生する場合があります。
設定するときは、お客様自身の判断でお願い致します。
また、この設定を行っても「Windows セキュリティの警告」ウィンドウは表示されてしまう報告があります。予めご了承下さい。
≪Windows10の場合≫
- [スタート]-[Windows システムツール]-[コントロールパネル]を実行します。
- 「すべてのコントロール パネル項目」ウィンドウから「インターネットオプション」をクリックします。
- 「インターネットのプロパティ」ウィンドウから「詳細設定」タブをクリックします。
- 「設定」欄から「マイコンピューターのファイルでのアクティブコンテンツの実行を許可する」チェックボックスをON(規定値はOFF)に設定します。
- 「セキュリティ」タブをクリックします。
- 「セキュリティ設定を表示または変更するゾーンを選択してください。」欄から「ローカルイントラネット」を選択し、【レベルのカスタマイズ】ボタンをクリックします。
- 「セキュリティ設定 – ローカルイントラネットゾーン」ウィンドウを以下のように設定します。(※1)
- 「ActiveXコントロールとプラグインの実行」ラジオボタンを「有効にする」(規定値は「有効にする」)
- 「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」ラジオボタンを「有効にする」(規定値は「無効にする」)
- 「スクリプトを実行しても安全だとマークされているActiveXコントロールの初期化とスクリプトの実行」ラジオボタンを「有効にする」(規定値は「有効にする」)
- 【OK】ボタンをクリックし、「セキュリティ設定 – ローカルイントラネットゾーン」ウィンドウを閉じます。
- 【適用】ボタンをクリック、【OK】をクリックし、インターネットのプロパティ」ウィンドウを閉じます。
- コンピューターを再起動します。
(※1)
HTML内のスクリプトでActiveXコントロールは
var pcm = new ActiveXObject("Pcm.App");
しか使用しておらず、「Windows セキュリティの警告」ウィンドウと表示される場合に限りますが、開発用のコンピューターは「Windows セキュリティの警告」ウィンドウが表示されず、納品用のコンピューターは「Windows セキュリティの警告」ウィンドウが表示されるとの報告事例があります。
開発用のコンピューターは、(使用時間か起動回数か不明ですが)PC-Mappingを使用することにより、Windows側から「スクリプトを実行しても安全だとマークされているActiveXコントロール」と認識されているため、「Windows セキュリティの警告」ウィンドウが表示されないのかもしれません。
とすると、納品用のコンピューターは、PC-Mappingをインストールして直ぐのため、「スクリプトを実行しても安全だとマークされているActiveXコントロール」と認識されておらず、「Windows セキュリティの警告」ウィンドウが表示されると予想します。
よって、PC-Mappingを使用していれば、Windows側から「スクリプトを実行しても安全だとマークされているActiveXコントロール」と認識され、「Windows セキュリティの警告」ウィンドウが表示されなくなる可能性はあります。
|