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
ピンバック by 近頃の、とあるR。 » Vistaのおまじない 2008 年 10 月 15 日 18:27
[...] AHKでctrlダブルクリック検索窓を出すように googleデスクトップに付いている機能ですが、そのgoogleデスクトップがうちのvistaでは挙動に問題があったので [...]