MATLABのエディターはF9を押すと選択されたテキストがコンソールへと送られて、そのまま実行されるナイスな機能があります。Pythonをウィンドウズで使っている場合、似たようなことをするにはPyScripterというエディター+IDEがあって、なかなかいいんだけどGeany+DreamPieの組み合わせに慣れすぎたためPyScripterはあまり使っていない。(UbuntuならGeanyだけでコンソールが統合された環境になるみたいだけども。)
ところが今日、偶然にもGeanyのWikiサイトができているのを発見し、こんなAutoHotKeyのスクリプトでGeanyとConsole2とを連動させる方法みつけた。DreamPie用にはいろいろいじらなければならなかったし、Console2の例自体もなぜか多少変更しないとうちの環境では動かなかったので、念のためConsole2の変更後のから貼ってみる。
TestConsole()
{
IfWinNotExist, ahk_class Console_2_Main,
{
Run, C:\Program Files (x86)\Console2\Console.exe -t Console2
WinWait, ahk_class Console_2_Main,
}
}
ActivateConsole()
{
TestConsole()
WinActivate, ahk_class Console_2_Main,
WinWaitActive, ahk_class Console_2_Main,
}
#1::
WinGetActiveTitle, editor
old_clipboard = %clipboard%
Send, {CTRLDOWN}c{CTRLUP}
ActivateConsole()
Send, {SHIFTDOWN}{INSERT}{SHIFTUP}{RETURN}
WinActivate, %editor%,
clipboard = %old_clipboard%
return
Console.exeへのパスのところを自分の環境に合わせて変更するのは当たり前だけど、WikiではSend, {SHIFTDOWN}{INSERT}{SHIFTUP}{RETURN}のところがCnrl Endになっていてこれがだめだった。#2,#3は省略しました。
では、いよいよDreamPie版。
ActivateDreampie()
{
IfWinExist DreamPie ahk_class gdkWindowToplevel
{
WinActivate
}
else
{
Run, C:\Users\ユーザー名\AppData\Local\DreamPie\dreampie.exe --hide-console-window "C:\Python27\python.exe"
WinWait DreamPie ahk_class gdkWindowToplevel
WinActivate DreamPie ahk_class gdkWindowToplevel
}
}
!r::
WinGetActiveTitle, editor
old_clipboard = %clipboard%
Send, {CTRLDOWN}c{CTRLUP}
ActivateDreampie()
Click 40,440
Send, {CTRLDOWN}v{RETURN}{CTRLUP}
WinActivate, %editor%,
clipboard = %old_clipboard%
return
ショートカットは!rでAlt+Rにしてみたが、Windowsキー+rなら#rになる。まあ詳しくはAHKのチュートリアルを参照。DreamPieへのパスとPythonへのパスも適当に変更してください。
追記 ClickのところはDreamPieの大きさによって変わります。たぶんディスプレイの解像度設定でDreamPieの大きさが変わるようです。AHKに付属しているWindow SpyをつかってMouse PositionのIn Active Windowの値を見ながら下のマルチライン入力窓の中をクリックするように調整してください。
(使い方)
AHKのBasicをインストールして、一度起動したらマイドキュメントにできるAutoHotKey.ahkというファイルを編集して上記の内容にします。あとはAHKを立ち上げた状態でGeanyでAltキーとRを押すとDreamPieがアクティブになって選択されたテキストが実行されるはず。DreamPieが起動していなかったら起動するようにしたまではいいけど、現時点ではDreamPieがすでに実行されていないとテキストがうまく貼りつけられないバグあり。これはちょっとやっただけではデバッグできんかった。。RunWaitでだめでWinWaitにしたがこれもだめ。
AutoHotKeyを使ってできそうなことはなんとなくわかっていたが、PythonでWin32com経由で鮮やかにできるんじゃないかとかおもいつ
つ敬遠していたが、かなり自分のやりたいことに近いことをしているスクリプトをWikiに載せてくれた親切なお方のお陰でやる気になった。Dropbox
PortableのAHK版も使っているのでAHKはすごそうだなぁとはおもっていたけど、いやいや便利だわ。初めて使ったけど簡単だし。Win32comはドキュメンテーションが絶望的に難しかったのをみたあとなので、お手軽なAHKは素晴らしいと思う。
最近のコメント