AutoHotKeyでOperaの選択テキスト内のURLを一気に開く
http://www.google.co.jp/
ttp://search.yahoo.co.jp/
://search.msn.co.jp/
こーいったリンクされていないURLをまとめて開きたい。
ただ単に選択テキストをコピーしてahkに渡しつつ、正規表現でURLっぽいのをゲットして、そのままOperaにコマンドラインで渡せばできね?
と思ったら、渡した分だけウインドウが作られてしまった。現在開いているOperaに新しいタブとして追加させるにはDDEで渡すしかないっぽいが、AutoHotKeyでDDEを扱う方法が分からなかったので、力技でやることにした。
;menu.ini
[Hotclick Popup Menu]
Item, "選択テキスト内のURLを全て開く" = Copy & Execute program, "C:\ahk\AutoHotkey.exe", "C:\ahk\openallurl.ahk"
;openalllink.ahk
#NoTrayIcon
lines := RegExReplace( Clipboard, "(`r`n)+", "`r")
Loop, parse, lines, `r,
{
match_result := RegExMatch( A_LoopField, "t?p?s?:?//([-_.!~*'()a-zA-Z0-9;/?:@&=+$,`%#]+)", $ )
If match_result != 0
{
Clipboard = http://%$1%
wait( 10 )
Send, {LCtrl Down}t{LCtrl Up} ;新しいタブ
wait( 40 )
Send, {LCtrl Down}b{LCtrl Up} ;貼り付けて移動
wait( 40 )
}
}
wait( time ) {
begin := A_TickCount
Loop
{
if A_TickCount - begin > time
break
}
}
何をしているのかというと、選択テキストを改行で分解してURLっぽいのをゲット。ここまでは良い。その後は・・・
- ゲットしたURLをクリップボードに入れる
- 強制的にCtrl+Tを発生させて新しいタブを表示させる
- 強制的にCtrl+Bを発生させてクリップボード内のURLを貼り付けて移動させる
- 1~3を繰り返す
こんなんで本当に大丈夫なのか? と思ったが、どうやらCPUを他に取られていると新しいタブの生成や貼り付けてからの移動で微妙に時間を取ってしまい、次の入力がズレてしまう時があったのでwaitを入れることにした。上手く開かない時はwaitの数字を大きく設定する。waitがちゃんと入っていればしっかり開かれるようだ。
正規表現はPerlメモから拝借した。非リンクだけじゃなくh抜き等にも対応するため、最低限スラッシュ2個さえあれば反応するようにしてる。そこら辺で不都合があるなら適当に弄るといいだろう。
追記1
選択範囲のソースを取得できることをすっかり忘れてた。というわけでJavaScriptで全て解決するっぽいのでがんばる。
一応ahk経由だとポップアップブロックが発生しないというメリットが一応あるんだがな。そこら辺は使う人次第か。
追記2
渡した分だけウインドウが作られたって書いたけど、設定を良く見たらSDIにチェックが入っているせいだった。チェック外してみたところ、コマンドラインでも普通にタブが開いた。
Info
Navigation
- 関連のあるエントリ
- 2007-05-16 あの素晴らしいCSSを二度三度
- 2007-02-05 AutoHotKeyでOperaにクリップボード内のURLを全部開かせる
- 2006-11-21 AutoHotKeyでOperaにCopyURL+
- 2006-11-22 AutoHotKeyでOperaでもUserJSをインストールできるようにする
- 2007-11-14 続・ニコニコ動画視聴補助スクリプト for Opera
- 新しいエントリ(日付順)
- Operaで選択範囲内のあらゆるURLを一気に開く
- 古いエントリ(日付順)
- さようならコンポジット、はじめましてD端子
Comment
投稿したコメントは公開されません。サイトオーナーのみが閲覧できます。
返信等を希望する場合は、コメント内に連絡先のメールアドレスかサイトのURLを入力してください。
2007
0110