[全体] [技術メモ] 各一覧の該当ページへ

googleデスクトップのCTRLダブルクリックのあれ3

[技術メモ] 2008年6月27日(金曜日) 22:01

ctrl二度押しで検索窓

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ツールバーとの相性も抜群で、ハイライト表示などにも齟齬が全くありません。
urlencode

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

今のコード

今のところ、このコードで使ってます。
そこそこ満足なので、この件は完了かなヽ(・∀・)ノ

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

Comments (1)

1件のコメント

  • ピンバック by 近頃の、とあるR。 » Vistaのおまじない 2008 年 10 月 15 日 18:27

    [...] AHKでctrlダブルクリック検索窓を出すように googleデスクトップに付いている機能ですが、そのgoogleデスクトップがうちのvistaでは挙動に問題があったので [...]