FreeMind を使って調べものをしつつ、まとめていくとき、一番面倒なのはノードに対してリンクをつけること。これを AutoHotkey を使って自動化したい。
前提 : AutoHotkey がインスールされていること。
こちらをダウンロードしてダブルクリックで起動。→ ffLink2fm.ahk 。タスクトレイに アイコン が表示される。
使い方
- FreeMind で、新規に作成したいノードの「親になるノード」をアクティブにしておく。
- Firefox で対象のサイトを開く。
- Ctrl + Shift + L を押すことによって、FreeMind に新規ノードが作成される。
※ 上手く動作しないときは、下記の実装において適当に Sleep の値を大きくする。たまにおかしな動作をする。 ^^;
実装
^+l:: ; Ctrl + Shift + L
; JavaScript をロケーションバーに入力し、
; サイトのタイトルと URL をアラートに表示
clipboard = javascript:(function(){alert(document.title + "\n" + location.href)})();
Send ^l
Send ^v{ENTER}
Sleep 1000
; 表示されたアラートの内容をコピー
Send ^a^c{ENTER}
; クリップボードの内容を分割
StringSplit, url_ary, clipboard, `n
clipboard = %url_ary1%
SetKeyDelay 300
; アプリケーションの切り替え
Send !{Tab}
; FreeMind がアクティブになるのを待つ
SetTitleMatchMode, 2
WinWaitActive, FreeMind
; 新規子ノードを作成してペースト
Send {Ins}^v
; ノードにリンクを設定
clipboard = %url_ary2%
Send ^k^v{ENTER}
return
サイトのタイトルと URL の取得
以下の JavaScript をロケーションバーで実行することによって、アラートにサイトのタイトルと URL を表示。(cf. ブックマークレット) コピーしてクリップボードへ。
javascript:(function(){alert(document.title + "\n" + location.href)})();
文字列を分割したものを配列として利用
クリップボードから文字列を取り出し、タイトルと URL を配列に入れようと思ったら、AutoHotkeyを流行らせるページ - 配列 によると、
AutoHotkeyには配列型変数は無く、StringSplitやWinGetなどのコマンドでは、配列の代わりに最後に数字の付いた変数に結果を代入する。
なるほど、文字列を区切ってそれを配列代りに使うと。StringSplit というコマンドのポイントは、出力される配列のようなもの。
ここで「array」を指定した場合、「array0」に要素数が、「array1」「array2」...に各要素が格納される。
内容を参照するときも独特。以下では、組み込み変数である clipboard より改行を区切り文字に指定し、 url_ary 変数に分割した内容を入れている。参照するときは、%url_ary添字% と書く。
; クリップボードの内容を分割 StringSplit, url_ary, clipboard, `n clipboard = %url_ary1%
(cf. StringSplit)
Insert キー
{Ins} と書く。(cf. Send/SendRaw/SendInput/SendPlay/SendEvent: Send keys & clicks )
その他
今回は使わなかったけれど、クリップボッドの内容を順次メッセージボックスに表示させるには次のようにする。
Loop, parse, clipboard, `n, `r
{
MsgBox, , , %A_LoopField%
}
(cf. Clipboard, ClipboardAll, and OnClipboardChange, Loop (parse a string) )
追記 (2009.1.17) : 手動でやるならアドオン Make Link を使ってページのタイトルと URL より HTML の リンクとなる文字列を作成。Freemind でリンクを子ノードとして貼り付けたいノードを選択してペーストする。どちらがお手軽なんだろう... ^^;
0コメント:
コメントを投稿