none
Run メソッドを用いた開発について RRS feed

  • 質問

  • Webアプリケーション開発を行っており、

    ActiveXを用いて以下を実現したいと考えております。

    1.クライアント画面でファイルをサーバからダウンロード
     (ブラウザのダウンロードメッセージは表示しない)
    2.ダウンロードしたファイルを自動で起動
    3.ダウンロードしたファイル閉じた際、編集したファイルを自動でサーバにアップロード

    上記を実現するにあたって以下のメソッドを利用していますが、うまく動作せず困っています。

     ■「Runメソッド」について

      下記サイトのリファレンスに記載のRunメソッドについて

     https://msdn.microsoft.com/ja-jp/library/cc364421.aspx

     引数「bWaitOnReturn」に「True」を渡すと

     実行プログラムが終了するまでスクリプトが待機されるという認識ですが、プログラム起動時に同一拡張子のファイルが

     実行中もしくは、Run実行後に同一拡張子の他ファイル手動実行の場合において、

      1)待機せずスクリプトが再開してしまう。

      2)全ての同一拡張子が終了しないと

        スクリプトが再開しない

     といった事象が発生しています。

     以下、実施例)

      OSWindows 32bit

      IE11

      Script言語:JavaScript 

      起動ファイル

       Office2010 ExcelWordPowerPoint

      <結果>

      Excel:問題なし

      WordPowerPoint:1)2)共に発生

      ※Office2013だとExcelも2)が発生します。

       また、VBScriptに変更の場合や

       execメソッド使用でも同事象になることは確認済み

     ■ご質問事項■

     ・上記の1)2)の回避方法はありますでしょうか。

     宜しくお願い致します。

    2015年3月6日 11:11

回答

  • 一般論として、相手側のプログラムの作りに依存する話ですので、すべてのファイル・アプリケーションに対して適用可能な方法はありません。
    特定のプログラムに限定するのであれば、そのプログラムの動きを観察し、それに応じた作り込みの可能性もありますが、バージョンが変わると動かなくなる諸刃の剣です。

    さて、スクリプトベースではどうしようもないと思います。
    ActiveX 部分で対象のアプリケーションの動きを監視するといった作り込みが必要になるかと予想します。
    (ただし、ちゃんときれいに動かすのはとてつもなく大変だと思うので、できれば仕様を変えるなど、別の方策を探していただいた方が良いと、個人的には思います)
    • 編集済み AzuleanMVP 2015年3月6日 13:23
    • 回答の候補に設定 星 睦美 2015年3月9日 7:32
    • 回答としてマーク 星 睦美 2015年3月19日 8:08
    2015年3月6日 13:21
  • 2.ダウンロードしたファイルを自動で起動
    そこは同期でなく、非同期で突き放す。

    3.ダウンロードしたファイル閉じた際、編集したファイルを自動でサーバにアップロード
    setTimeoutなどで、その事象、ファイル更新日時の変化とか、を監視する。
    • 回答の候補に設定 星 睦美 2015年3月9日 7:32
    • 回答としてマーク 星 睦美 2015年3月19日 8:08
    2015年3月6日 13:43

すべての返信

  • 一般論として、相手側のプログラムの作りに依存する話ですので、すべてのファイル・アプリケーションに対して適用可能な方法はありません。
    特定のプログラムに限定するのであれば、そのプログラムの動きを観察し、それに応じた作り込みの可能性もありますが、バージョンが変わると動かなくなる諸刃の剣です。

    さて、スクリプトベースではどうしようもないと思います。
    ActiveX 部分で対象のアプリケーションの動きを監視するといった作り込みが必要になるかと予想します。
    (ただし、ちゃんときれいに動かすのはとてつもなく大変だと思うので、できれば仕様を変えるなど、別の方策を探していただいた方が良いと、個人的には思います)
    • 編集済み AzuleanMVP 2015年3月6日 13:23
    • 回答の候補に設定 星 睦美 2015年3月9日 7:32
    • 回答としてマーク 星 睦美 2015年3月19日 8:08
    2015年3月6日 13:21
  • 2.ダウンロードしたファイルを自動で起動
    そこは同期でなく、非同期で突き放す。

    3.ダウンロードしたファイル閉じた際、編集したファイルを自動でサーバにアップロード
    setTimeoutなどで、その事象、ファイル更新日時の変化とか、を監視する。
    • 回答の候補に設定 星 睦美 2015年3月9日 7:32
    • 回答としてマーク 星 睦美 2015年3月19日 8:08
    2015年3月6日 13:43
  • Azulean様

    >ActiveX 部分で対象のアプリケーションの動きを監視するといった作り込みが必要になるかと予想します。
    >(ただし、ちゃんときれいに動かすのはとてつもなく大変だと思うので、できれば仕様を変えるなど、別の方策を探していただいた方が良い >と、個人的には思います)

    ご指摘の通り、作りこみがベースとなりますので、複雑な処理になるかもしれません。

    ご回答ありがとうございます。参考にさせて頂きます

    以上

    2015年3月9日 6:15
  • ィンドウズスクリプトプログラマ様

    ご回答ありがとうございます。

    内容を確認しました。ファイルの操作イベントをもう少しうまく取得できる方法がないか試してみます。

    ありがとうございます。

    以上

    2015年3月9日 6:16