HTAと聞いてご存知の方が少なくなったような気がする今日このごろです。
Windowsで動くGUIを作るべくHTMLベースのアプリケーションHTAを作ってSambaをマウントしてみることにしました。前途多難な道のりでした。この時間を短縮するべく公開しておきます。先人に頼るだけでなく頼られる立場にもならないと。。
ライブラリはTwitter Bootstrapを使って基本はHTMLベース。HTAは特有の設定が一部にありました。HTAの書き方はこのサイトを参考にしました。
HTA上でScriptはJscriptとVBScriptが動作します。今回はVBScriptベースでコードを書いてみました。

ソースコードはGithubに一応あげておきました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8 ; IE=9" />
<title>パソコン部ファイルサーバ</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
<style>
html,body {
background: #f8f8f8;
overflow: hidden;
}
div.wrap {
width: 500px;
}
#username,#password {
font-size: 25px;
}
</style>
http://jquery.js
http://bootstrap/js/bootstrap.min.js
<script>
window.onload = function() {
resizeTo(600,400);
}
window.onresize = function() {
resizeTo(600,400);
}
</script>
<script language="VBScript">
' 参考サイト http://www.ujp.jp/modules/tech/index.php/System/Programs/VBS_MountNetworkDrive.html
Option Explicit
Dim objNtWork
Sub mount()
On Error Resume Next
Set objNtWork = CreateObject("WScript.Network")
objNtWork.MapNetworkDrive "G:","¥¥10.5.25.248¥groups",,document.logon.username.value,document.logon.password.value
Select case Err.Number
case 0
msgbox "ログインしました。"
case -2147023570
msgbox "ユーザIDかパスワードが間違っています。"
case -2147024811
msgbox "すでにログインしています。"
case -2147024829
msgbox "指定されたドライブが見つかりません。"
case -2147024843
msgbox "サーバが見つかりません。"
case else
msgbox "エラーが発生しました。"
end select
Set objNtWork = Nothing
End Sub
Sub unmount()
On Error Resume Next
Set objNtWork = CreateObject("WScript.Network")
objNtWork.RemoveNetworkDrive "G:", True
Select case Err.Number
case 0
msgbox "ログアウトしました。"
document.logon.username.value = ""
document.logon.password.value = ""
case -2147022646
msgbox "ログインしていません。"
case else
msgbox "エラーが発生しました。"
end select
Set objNtWork = Nothing
End Sub
Sub link()
Dim objWshShell
Set objWshShell = CreateObject("WScript.Shell")
objWshShell.Run """firefox.exe"" -new-tab https://10.5.25.248:20000/"
Set objWshShell = Nothing
End Sub
</script>
<HTA:APPLICATION
APPLICATIONNAME="パソコン部ファイルサーバ"
BORDER="thick"
BORDERSTYLE="raised"
CAPTION="yes"
CONTEXTMENU="no"
ICON="note.ico"
ID="value"
INNERBORDER="no"
MAXIMIZEBUTTON="no"
MINIMIZEBUTTON="yes"
NAVIGABLE="no"
SCROLL="no"
SCROLLFLAT="yes"
SELECTION="no"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="yes"
SYSMENU="yes"
VERSION=""
WINDOWSTATE="normal" />
</head>
<body>
<div class="container wrap">
<h1>パソコン部ファイルサーバ</h1>
<p>データはバックアップしていますがhomesへコピーしておくようにしてください。使い方はhttp://10.5.25.248/を見るようにしてください。</p>
<form name="logon">
<label for="username">ユーザー名</label>
<input type="text" id="username" class="input-block-level" placeholder="ユーザー名">
<label for="password">パスワード</label>
<input type="password" id="password" class="input-block-level" placeholder="パスワード">
<div class="form-actions">
<button type="button" class="btn btn-large btn-primary" onclick="mount()">ログイン</button>
<button type="button" class="btn btn-large" onclick="unmount()">ログアウト</button>
<button type="button" class="btn btn-large btn-info" onclick="link()">パスワード変更</button>
</div>
</form>
</div>
</body>
</html>
ネットを漁っているとふと見つけたのがこの記事。
VBScriptでネットワークドライブを扱う – UJP.jp
ここにはエラー番号と検出について書いてありました。この摩訶不思議な数字はどうなっているのか不明です。ひとまずテストを行ってみたところ正常に検出できていたので問題はないかと思います。
コメントを残す