サポート > PC-MAPPING ヒント集 > スクリプト > HTMLメニュー内でのスクリプト使用について
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にして下さい。

■ 準備
  1. ダウンロードしたファイルを「C:\sample\script35」へ解凍します。

  2. PC-Mappingを起動します。

  3. [ワークスペース]-[コマンド]-[コマンドラインバー]メニューを実行し、コマンドラインバーを表示します。

■ 操作方法
  1. [ホーム]-[ファイル]-[開く]メニューを実行し、「C:\sample\script35\Sample.pcm」を開きます。

  2. コマンドラインバーに「Htmlmenu△C:\sample\script35\sample.html△-modeless;」(△は半角スペース)と記述します。

  3. 実行すると、「sample」ウィンドウが表示されます。

  4. var pcm = new ActiveXObject("Pcm.App");
    を実行している【参照】ボタンをクリックすると、
    (A):「Windows セキュリティの警告」ウィンドウと表示されます。【はい】ボタンをクリックします。
    (B):「Windows セキュリティの警告」ウィンドウと表示されません。

  5. 「開く」ウィンドウが表示されます。
    「C:\sample\script35\sample.pcm」を選択し、【開く】ボタンをクリックします。

  6. 一度、「Windows セキュリティの警告」ウィンドウで【はい】ボタンをクリックすると、次に「Windows セキュリティの警告」ウィンドウは表示されなくなります。
    よって、4.で(A)だった場合は、「sample」ウィンドウを閉じ、2.を行って「sample」ウィンドウを開き直して下さい。

  7. var fso = new ActiveXObject("Scripting.FileSystemObject");
    を実行している【確認】ボタンをクリックすると、
    (C):「Windows セキュリティの警告」ウィンドウと表示されます。【はい】ボタンをクリックします。
    (D):「Windows セキュリティの警告」ウィンドウと表示されません。

  8. 「「C:\sample\script35\sample.pcm」ファイルはあります。」または「「」ファイルはありません。」メッセージウィンドウが表示されます。

  9. 【OK】ボタンをクリックします。

  10. 【閉じる】ボタンをクリックし、「sample」ウィンドウを閉じます。

    (A)(C)であれば【パターン1】、(B)(C)であれば【パターン2】、(B)(D)であれば【パターン3】となります。

以下に、「Windows セキュリティの警告」ウィンドウを表示しない方法について記載します。

■ スクリプトのコマンド化
【パターン2】に有効な処理です。
HTML内のスクリプトで実行している
var fso = new ActiveXObject("Scripting.FileSystemObject");
をPC-Mapping側で実行します。

  1. [プロジェクト]-[プロジェクト設定]-[プロジェクトエキスパート]を実行します。

  2. 「スクリプト」パネルを表示します。

  3. ここにスクリプトを記述することで、コマンドとして実行する事ができます。
    詳しくは、ヒント集イベント駆動型スクリプティングH [スクリプトをコマンドとして実行] をご覧下さい。

  4. コマンド「pcmFileExists」で実行されるように、「Windows セキュリティの警告」ウィンドウが表示される原因の
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    を記述、処理しています。このサンプルに戻り値はありませんが、必要な場合は、アプリケーションクラス(Pcm.AppClass):ParamStringプロパティ、ParamStringArrayプロパティなどを使用し、戻り値の受け渡しは可能です。

  5. 【OK】ボタンをクリックし、「スクリプト」パネルを閉じます。

  6. メモ帳等のエディターで「C:\sample\script35\sample.html」を開きます。

  7. 39行目でアプリケーションクラス(Pcm.AppClass):Docmd()メソッドを使用し、【確認2】ボタンクリックすると、コマンド「pcmFileExists」を実行します。

  8. 「■ 操作方法」1.〜6.まで操作を行い、「sample」ウィンドウの【確認2】ボタンをクリックします。

  9. すると、「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更新) をご覧下さい。

  1. コマンドラインバーに「Htmlmenu△C:\sample\script35\sample2.html△-3△-modeless△-wndtop;」(△は半角スペース)と記述します。

  2. 実行すると、「sample2」ウィンドウが表示されます。

  3. 【参照】ボタンをクリックすると、「Windows セキュリティの警告」ウィンドウは表示されず、「開く」ウィンドウが表示されます。
    「C:\sample\script35\sample.pcm」を選択し、【開く】ボタンをクリックします。

  4. 【確認】ボタンをクリックすると、「Windows セキュリティの警告」ウィンドウは表示されず、「「C:\sample\script35\sample.pcm」ファイルはあります。」メッセージウィンドウが表示されます。

  5. 【OK】ボタンをクリックします。

  6. 【閉じる】ボタンをクリックし、「sample2」ウィンドウを閉じます。

■ セキュリティの設定
【パターン1】、【パターン2】に有効な処理ですが、保護モードは解除され、セキュリティ上の問題が発生する場合があります。
設定するときは、お客様自身の判断でお願い致します。
また、この設定を行っても「Windows セキュリティの警告」ウィンドウは表示されてしまう報告があります。予めご了承下さい。

≪Windows10の場合≫
  1. [スタート]-[Windows システムツール]-[コントロールパネル]を実行します。

  2. 「すべてのコントロール パネル項目」ウィンドウから「インターネットオプション」をクリックします。

  3. 「インターネットのプロパティ」ウィンドウから「詳細設定」タブをクリックします。

  4. 「設定」欄から「マイコンピューターのファイルでのアクティブコンテンツの実行を許可する」チェックボックスをON(規定値はOFF)に設定します。

  5. 「セキュリティ」タブをクリックします。

  6. 「セキュリティ設定を表示または変更するゾーンを選択してください。」欄から「ローカルイントラネット」を選択し、【レベルのカスタマイズ】ボタンをクリックします。

  7. 「セキュリティ設定 – ローカルイントラネットゾーン」ウィンドウを以下のように設定します。(※1)
    • 「ActiveXコントロールとプラグインの実行」ラジオボタンを「有効にする」(規定値は「有効にする」)
    • 「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」ラジオボタンを「有効にする」(規定値は「無効にする」)
    • 「スクリプトを実行しても安全だとマークされているActiveXコントロールの初期化とスクリプトの実行」ラジオボタンを「有効にする」(規定値は「有効にする」)

  8. 【OK】ボタンをクリックし、「セキュリティ設定 – ローカルイントラネットゾーン」ウィンドウを閉じます。

  9. 【適用】ボタンをクリック、【OK】をクリックし、インターネットのプロパティ」ウィンドウを閉じます。

  10. コンピューターを再起動します。

    (※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 セキュリティの警告」ウィンドウが表示されなくなる可能性はあります。