追記 (2011.3.23) : リボンUI を採用した Windows LiveWriter 2011 の場合は、こちらを参照。
1. Windows Live Writer にソースコードを貼り付ける操作を自動化したい
ブログに掲載するソースコードは、google-code-prettify を使い、色付けしている。
google-code-prettify にソースコードを色付けしてもらうには、pre タグを使い、以下の形式で記述する必要がある。
<pre class="prettyprint">ソースコード</pre>
( cf. Windows Live Writer でソースコードの貼り付け )
ブログを書くのに Windows Live Writer を使用。ソースコードを貼り付けるために、HTML の編集モードにして、挿入する位置を探すのは面倒。 (+_+)
AutoHotykey を利用して、ソースコードを貼り付けるためのショートカットキーを設定。ブログに貼り付けたいコードを選択し、ホットキーを入力したら、上記の形式にして Windows Live Writer にペーストするようにしたい。
2. ソースコードを Windows Live Writer に貼り付けるためのスクリプト
スクリプトの起動方法
前提 : AutoHotkey がインスールされていること。
- 右のスクリプトをダウンロードした後、ダブルクリックして起動。→ pasteHTMLCode2Writer-old.ahk
- タスクトレイに アイコン が表示される。
使い方
- Windows Live Writer で、予めソースコードを挿入したい位置にカーソルを移動。
- ソースコードが書かれているアプリケーションをアクティブにし、対象のコードを選択。
- Ctrl + Shitf + Q を押すことによって、ソースコードが Windows Live Writer に貼り付けられる。
※ ソースコードが書かれているアプリから Windows Live Wirter に切り替えるとき、Alt + Tab のショートカットキーを利用して切り替えている。よって、上記の 1 の操作は必ず必要。
※ もし上記操作で動作しない場合、以下の実装における Sleep コマンドの値を大きくするといいかも。
3. スクリプトの実装方法
スクリプトは、以下の通り。
^+Q:: ; Ctrl + Shift + Q Send ^c ; コピー Send !{Tab} ; Alt + Tab でウィンドウを切り替える ; Windows Live Writer がアクティブになるのを待つ SetTitleMatchMode, 2 WinWaitActive, Windows Live Writer, , 2 ; クリップボードの内容を変更 clipboard = <pre class="prettyprint">%clipboard%</pre> Sleep 500 Send ^+v ; 形式を選択してペースト Sleep 800 Send H ; HTML を選択 Sleep 600 Send {ENTER} ; OK ボタンを押す return
複数行の文をホットキーに割当てる
複数行に渡ったコマンドを書くには、最後に return を付ける。
ホットキー :: コマンド1 コマンド2 ... return
(cf. Launching a program or document)
キーの入力
キーの入力を行うには、Send コマンド を利用する。
特殊なキーを入力をするには、以下のように書く。
- Ctrl : ^
- Alt : !
- Shift : +
cf. Hotkeys (Mouse, Joystick and Keyboard Shortcuts)
ソースコードを貼り付ける先のウィンドウを確認する方法
ソースコードを貼り付ける先の、ウィンドウがアクティブになるまで待つコマンドを利用。
タイトルの中の一部を指定することによって、見つけることができるように、
を設定した。
クリップボードの中身を更新
コピーしたテキストはクリップボードに転送される。クリップボードにアクセスするためには、組込み変数
clipboard
を利用する。
(cf. Clipboard, ClipboardAll, and OnClipboardChange)
アプリケーションの反応を待つために一時停止する
Send コマンドによってキー入力を連続して行ったら、アプリケーションがそのスピードに対応できなかった。そのため、 Sleep コマンドを送った後短い時間一時停止するようにした。
一時停止しておく適切な時間間隔がわからなかったので、 とりあえず、自分の環境において思ったように動く値を適当に入力。
Sleep コマンド以外でも、SetKeyDelay、SetWinDelay によって処理を遅らせることができるようだ。
エラー処理はしてない
ホットキーを入力した際、失敗することもあるけれど、エラー処理は面倒なのでしなかった。
てゆうか、まだエラー処理まで読んでない。… ^^;
0コメント:
コメントを投稿