
AutoHotkeyで、googleデスクトップのアレを作ってしまおう…な、
googleデスクトップのCTRLダブルクリックのあれ2のその後です。
CTRL2度押しの調整
ctrlを連打した際の挙動は好み次第でしょうか。
3度押し以上も2度押しと同じ扱いにする場合
新・なまず日記方式がエレガントです。
~Control::
SetTimer, Control_CheckCnt, 170
Control_cnt += 1
return
Control_CheckCnt:
Hotkey, ~Control, Off
SetTimer, Control_CheckCnt, Off
if(Control_cnt >= 2)
{
;ここにコード
}
Control_cnt = 0
Hotkey, ~Control, On
return
この場合ctrl連打が終了するまで反応しません。
2度押し直後に反応し再反応しない
ctrlを連打しても2回目で反応し、尚且つそのまま連打し続けても再反応しない挙動の場合。
~Control up::
if( A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 180
and (tempA_TimeSincePriorHotkey > 400 or tempA_TimeSincePriorHotkey == -1) ) {
GuiControlGet, Gui_mode, Visible, Value
if (!Gui_mode) {
Gui, Show, x204 y145 h41 w286, 検索してね-AHK
GuiControl, Focus, Value
} else {
Gui, Hide
}
}
tempA_TimeSincePriorHotkey := A_TimeSincePriorHotkey
return
前回と前々回 ctrl が押された時間を記録し、前々回が近すぎる場合を3度押しとして除外します。
こちらの挙動の方がしっくり来るので、現在はこれを利用中。
URLエンコード
Operaの備忘録のぺえじ 方式がエレガントです。別途テキストファイルを用意する手間が必要ですが、しっかりとした出力が得られます。
googleツールバーとの相性も抜群で、ハイライト表示などにも齟齬が全くありません。

他のコードも何種か試しましたが文字コードの関係でしょうか、それらは、googleツールバーとの相性が悪く残念な結果に終わりました。

今のコード
今のところ、このコードで使ってます。
そこそこ満足なので、この件は完了かなヽ(・∀・)ノ
Gui, Add, Edit, vValue x12 y11 w220 h20 ,
Gui, Add, Button, Default x242 y11 w30 h20 , GO
GUI, Hide
tempA_TimeSincePriorHotkey := A_TimeSincePriorHotkey
URLEncode(str)
{ ;http://orera.g.hatena.ne.jp/misttrap/20070214/p1
ret =
tmp = 0
ini = %A_ScriptDir%\sjis2utf8E.ini
Loop, parse, str
{
num := Asc(A_LoopField)
if tmp <> 0
{
tmp += %num%
IniRead, val, %ini%, zenkaku, %tmp%
ret = %ret%%val%
tmp = 0
}
else if A_LoopField in a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9,-,_,!,~,*,.,(,)
{
ret = %ret%%A_LoopField%
}
else if num < 128
{
IniRead, val, %ini%, ascii, %num%
ret = %ret%%val%
}
else if(num > 160 && num < 224)
{
IniRead, val, %ini%, hankana, %num%
ret = %ret%%val%
}
else
{
tmp := num * 256
}
}
return ret
}
~Control up::
if( A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 180
and (tempA_TimeSincePriorHotkey > 400 or tempA_TimeSincePriorHotkey == -1) ) {
GuiControlGet, Gui_mode, Visible, Value
if (!Gui_mode) {
Gui, Show, x204 y145 h41 w286, 検索してね-AHK
GuiControl, Focus, Value
} else {
Gui, Hide
}
}
tempA_TimeSincePriorHotkey := A_TimeSincePriorHotkey
return
~Esc::
GUI, Hide
GuiControl,,Value
return
ButtonGO:
Gui,submit
Gui, Hide
GuiControl,,Value
search_str := URLEncode(Value)
Run,http://www.google.co.jp/search?q=%search_str%
return