ASP.NET でクライアントのアプリを起動する
JavaScript から Wscript.Shell の Run メソッドでクライアントのプログラムを起動する。
- 電卓を起動する
- 共有フォルダにある EOS Movie の動画ファイルを Total Media Theatre 5 で再生する。動画のフルパスは固定。
- 共有フォルダにある EOS Movie の動画ファイルを MPC-HC で再生する。動画のフルパスは固定。
前提
IEのセキュリティ設定
ローカル イントラ ネットゾーン のレベルをカスタマイズして、「スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプト実行」を有効にする。有効にしないと、Wscript.Shell の Run メソッドが実行されない。セキュリティとしても、ローカル イントラ ネットに配置され、自分だけが使う自作Webアプリだから有効化してもいいのではないかと思う。しかし、ローカル イントラ ネットゾーン のセキュリティを下げることになるのでいい感じはしない。
結果
動画ファイルパスをデータベースに登録し、動的に動画ファイルパスを 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>
<!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
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
コメント
コメントを投稿