ソース
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<script> | |
onload = function(){ | |
// windowの位置、サイズについてmoveToとscreenTop(Left)のズレなどの取得は | |
// windowが閉じる直前のタイミングでやろうとすると、最小化状態から終了された場合に正しい値が取得できない。 | |
// 起動時にズレを取得しておき、リサイズ時に位置とサイズを逐一記録する。(本当は移動時にも記録したいが、onmoveのようなメソッドをHTAはサポートしていない | |
window位置保存() | |
onresize = function(){ window位置保存() } | |
path = fs.GetFolder('.').path + '/pos.txt' | |
if(fs.FileExists(path)){eval(Read(path))} | |
} | |
window位置保存 = function(){ | |
var w=window, doc=document, cW='clientWidth', cH='clientHeight' | |
var getObj=function(){return {L:w.screenLeft||w.screenX||0, T:w.screenTop||w.screenY||0, W:w.innerWidth||doc.body[cW]||doc.documentElement[cW]||0, H:w.innerHeight||doc.body[cH]||doc.documentElement[cH]||0}} | |
var L=400, T=400, W=400, H=400 | |
moveTo(L,T) | |
resizeTo(W,H) | |
var obj0 = getObj() | |
window位置保存=function(){ | |
var obj=getObj() | |
obj.L += L - obj0.L | |
obj.T += T - obj0.T | |
obj.W += W - obj0.W | |
obj.H += H - obj0.H | |
Write(path, 'moveTo('+obj.L+'<screen.width ? '+obj.L+' : 0,'+obj.T+'<screen.height ? '+obj.T+' : 0);resizeTo('+obj.W+','+obj.H+');') | |
} | |
} | |
fs = new ActiveXObject('Scripting.FileSystemObject') | |
Read = function(p){var o=fs.OpenTextFile(p), s=o.AtEndOfStream?'':o.ReadAll(); o.Close(); return s} | |
Write = function(path,v){ with(fs.CreateTextFile(path)){Write(v);return Close()} } | |
</script> | |
</html> |
単純にscreenTopなどを記録するだけだと微妙にズレるので、任意の値(今回のサンプルでは全項目:400)を設定する前後の値を比較して、ズレを考慮した処理になるようにしています。
モニタの解像度が変わるなどの理由で、moveToで指定した座標に移動させるとモニタにウィンドウが表示されないような状況になった場合は(0, 0)に移動するようにしました。
0 件のコメント:
コメントを投稿