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コメント:
コメントを投稿