以下のエントリーの続きである。
- ウイルスバスターのポップアップ広告を素早く閉じるスクリプトを作成した - blechmusik2の日記
- ウイルスバスターのポップアップ広告を素早く閉じるスクリプトを改良した - blechmusik2の日記
今回の改変では、×ボタンの中心をただしくクリックするよう、クリックする位置を微調整した。また、特定の色の存在を判定し損ねていたことと、スクリプトの処理を続行するか否かを問うメッセージの表示形式を修正した。
スクリプトのソースはつぎの通りである。
;;; ウイルスバスターのポップアップ広告を素早く閉じる ;;; スクリプトのライセンスは NYSL ;;; このスクリプトを終了するには、タスクトレイ上のアイコンから操作すること #NoEnv #Persistent #SingleInstance, Force SendMode Input ;;; -------------------- 以下、設定項目 ------------------- ;;; ポップアップ広告が表示されているかどうかを監視する間隔 ;;; 単位は ms timer_interval := 500 ;;; 左手用のマウスを使用しているときは ;;; 0 を 1 に書き換える left_handed_mouse_mode := 0 ;;; -------------------- 以上、設定項目 ------------------- ;;; CoordMode - AutoHotkeyJp ;;; http://sites.google.com/site/autohotkeyjp/reference/commands/CoordMode CoordMode, Pixel, Screen CoordMode, Mouse, Screen ;;; 組み込み変数 - AutoHotkeyJp ;;; http://sites.google.com/site/autohotkeyjp/reference/Variables X1 := A_ScreenWidth - 300 Y1 := A_ScreenHeight - 310 X2 := X1 + 30 Y2 := Y1 + 30 SetTimer, watch_ad, %timer_interval% return watch_ad: if ( check_colors("0xD9DCFC", "0x241CEB") ) { click_close_button("0x999999", left_handed_mouse_mode) ;; 監視処理を 2 秒間待機する Sleep,2000 ;; ポップアップ広告が表示されたままかどうかを調べる if ( check_colors("0xD9DCFC", "0x241CEB") ) { msgbox ,4 , , ポップアップ広告を消すことができませんでした`n処理を続行しますか? ;; 処理を続行しないときには、 ;; スクリプトの処理を終了する IfMsgBox, No ExitApp } } return check_colors(argv1, argv2) { return % is_the_color_of_a_pixel(argv1) && is_the_color_of_a_pixel(argv2) } is_the_color_of_a_pixel(color_BGR) { global X1, Y1, X2, Y2 ;; PixelSearch - AutoHotkeyJp ;; http://sites.google.com/site/autohotkeyjp/reference/commands/PixelSearch PixelSearch, Px, Py, %X1%, %Y1%, %X2%, %Y2%, %color_BGR%, 3, Fast return % (ErrorLevel) ? 0 : 1 } click_close_button(color_BGR, left_handed_mouse_mode = 0) { global X1, Y1 global close_button_X1 := X1 + 250 global close_button_end_Y1 := Y1 + 30 PixelSearch, Px, Py, %close_button_X1%, %Y1%, %A_ScreenWidth%, %close_button_end_Y1%, %color_BGR%, 5, Fast if ( ErrorLevel = 0) { ;; ×ボタンの中心にマウスカーソルを移動する MouseMove, Px + 3, Py + 3 ;; MouseClick - AutoHotkeyJp ;; http://sites.google.com/site/autohotkeyjp/reference/commands/MouseClick if ( left_handed_mouse_mode ) MouseClick, Right else MouseClick, Left } return }