ASP.NET でクライアントのアプリを起動する

JavaScript から Wscript.Shell の Run メソッドでクライアントのプログラムを起動する。

  • 電卓を起動する
  • 共有フォルダにある EOS Movie の動画ファイルを Total Media Theatre 5 で再生する。動画のフルパスは固定。
  • 共有フォルダにある EOS Movie の動画ファイルを MPC-HC で再生する。動画のフルパスは固定。

 

前提

IEのセキュリティ設定

ローカル イントラ ネットゾーン のレベルをカスタマイズして、「スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプト実行」を有効にする。有効にしないと、Wscript.Shell の Run メソッドが実行されない。セキュリティとしても、ローカル イントラ ネットに配置され、自分だけが使う自作Webアプリだから有効化してもいいのではないかと思う。しかし、ローカル イントラ ネットゾーン のセキュリティを下げることになるのでいい感じはしない。
01

結果

電卓起動 をクリック
02

MPC-HC再生 をクリック
04

動画ファイルパスをデータベースに登録し、動的に動画ファイルパスを JavaScript に埋め込めば、ASP.NET でクライアントアプリから動画を再生するアプリが実現できる。

 

ソース

ClientAppRun.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ClientAppRun.aspx.vb" Inherits="ClientAppRun" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script type="text/javascript">
        function CalcRun() {
            var objShell = new ActiveXObject("Wscript.Shell");
            objShell.Run("\"C:\\windows\\system32\\calc.exe\"");
            objShell = null;
            return false;
        }

        function PlayTMT5() {
            var obj = new ActiveXObject("WScript.Shell");
            obj.Run("\"C:\\Program Files (x86)\\ArcSoft\\TotalMedia Theatre 5\\uTotalMediaTheatre5.exe\" \"\\\\MEDIASV\\Family\\EOSMovie\\2012_11_03\\MVI_5896.MOV\"");
        }

        function PlayMPCHC() {
            var obj = new ActiveXObject("WScript.Shell");
            obj.Run("\"C:\\Program Files\\MPC-HC\\mpc-hc64.exe\" \"\\\\MEDIASV\\Family\\EOSMovie\\2012_11_03\\MVI_5896.MOV\"");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:Button ID="ButtonRunCalc" runat="server" OnClientClick="CalcRun()" Text="" />
      <asp:Button ID="ButtonPlayTMT5" runat="server" OnClientClick="PlayTMT5()" Text="TMT5" />
      <asp:Button ID="Button2" runat="server" OnClientClick="PlayMPCHC()" Text="MPC-HC" />
    
    </div>
    </form>
</body>
</html>

VBはコードレス。

ClientAppRun.aspx.vb
Partial Class ClientAppRun
    Inherits System.Web.UI.Page

End Class

 

課題

指定したプログラムを引数付きで実行できIEで動作する ActiveX を作成し、署名できないか?今後の勉強だね。

Visual Studio2012でMFC ActiveXの作成 (1)
http://mkdev-note.blogspot.jp/2012/11/visual-studio2012mfc-activex-1.html

SignTool.exe (署名ツール)
http://msdn.microsoft.com/ja-jp/library/8s9b9yaz(v=vs.110).aspx

コメント

このブログの人気の投稿

ダブルクォーテーションで括られたCSVカ​ンマ区切りテキストファイルを SQL Server で Bulk Insert する方法

PowerShellでTSV/CSVの列を絞り込んで抽出し、(先頭/行末)からN行出力する

IKEAの鏡を壁に取り付ける