HTAコネタ2007年04月26日 09時15分28秒

起動時に位置とサイズを指定

HTAのウィンドウが表示されるタイミングはhta:application要素が出現した時なので、これより前にwindow.resizeTo/moveToで位置と要素を指定できる。

サンプル

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>テスト</title>
<style>
body {
	background-color: threedface;
}
</style>
<script>
// 画面中央に320x240で表示
with( { w : 320, h : 240 } ) {
	window.resizeTo( w, h );
	window.moveTo( ( screen.width - w ) / 2, ( screen.height - h ) / 2 );
}
</script>
<hta:application innerBorder="no" scroll="no"></hta:application>
</head>
<body>
</body>
</html>
上のコードで、hta:applicationをscriptより前に記述すると、一瞬表示された後にセンタリングされる。

もっともhta:applicationを使用しなければこんなことに気を使わなくてもいいんだけど。

.htaにファイルをドラッグドロップできるようにする

割と定番だとおもうが、htafileにDropHandlerを登録すると、.htaのアイコンにファイルをドラッグドロップできるようになる。

DropHandlerの登録は

HKEY_CLASSES_ROOT\htafile\ShellEx\DropHandler
の標準の値に、文字列で
{60254CA5-953B-11CF-8C96-00AA00B8708C}
を設定する。以下の内容を.regファイルとして保存すれば登録できる(ハズ)。
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\htafile\ShellEx\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

ドラッグドロップされたパラメータを受け取るには、htaオブジェクトのcommandLineプロパティを使用する。 commandLineプロパティには、mshta.exeを実行した際のコマンドライン引数がそのまま格納されているので、パースする必要がある。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>テスト</title>
<hta:application id="hta1" innerBorder="no" scroll="no"></hta:application>
</head>
<body>
<textarea id="text1" style="width: 100%; height: 100%;"></textarea>
</body>
<script>
document.getElementById("text1").innerHTML =
	document.getElementById("hta1").commandLine;
</script>
</html>
この例では、textareaにこのHTA自身の絶対パスが表示される。 .htaにファイルをドラッグドロップして起動した場合はこの後ろにドロップされたファイルのパスが続くことになる。 HTA自身またはドロップされたファイルのパスに空白が含まれている場合は、パスはダブルクォートされた状態で渡されるので、単純にcommandLine.split(" ")というわけにはいかないので注意。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://dara-j.asablo.jp/blog/2007/04/26/1466849/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。