2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« WSFファイルをCScript.exeで実行するための拡張子(.wsfc)を追加する。 | トップページ | IE8のHTAで、ローカルソースファイルを編集するコンテキストメニュー拡張 »

2009年4月 7日 (火)

HTAで、シングルクリックとダブルクリックで排他的に分けて処理する。

シングルクリックとダブルクリックとで処理を分けようとしても、ダブルクリックすると、onclickとondblclickの両方がこの順序で発生するので、不可分です。

例えば、

<script language=vbscript>
sub document_onclick()
document.body.innerText=document.body.innerText & vbCrLf & window.event.type
end sub
sub document_ondblclick()
document.body.innerText=document.body.innerText & vbCrLf & window.event.type
end sub
</script>

では、シングルクリックでonclickだけが動き、ダブルクリックでonclickとondblclickの両方が動きます。

では、どうすれば、シングルクリックでonclickだけを動かし、ダブルクリックでondblclickだけを動かすことができるのでしょうか?

もし、ondblclick、onclickの順序で発生するのであれば、onclickでondblclickが先に発生しているか調べることができます。

<script language=vbscript>
dim type1
sub document_onclick()
type1=window.event.type
'settimeout "sub1",createobject("wscript.shell").regread("HKCU\Control Panel\Mouse\DoubleClickSpeed")
settimeout "sub1",createobject("shell.application").GetSystemInformation("DoubleClickTime")
end sub
sub document_ondblclick()
type1=window.event.type
end sub
sub sub1()
document.body.innerText=document.body.innerText & vbCrLf & type1
end sub
</script>

ダブルクリック時間は外部オブジェクトを使わないと取れない?
HTAなら使えますが、IEではセキュリティの制約で難しいかも。

« WSFファイルをCScript.exeで実行するための拡張子(.wsfc)を追加する。 | トップページ | IE8のHTAで、ローカルソースファイルを編集するコンテキストメニュー拡張 »