はなわともうします。
あやしい実験の成果について報告します。
NTのコンソールの動きをktermっぽくしよう、という試みです。
Windows2000でしか確認していませんが、
なかなかいい感じで使えています。
window ConsoleWindowClass /^ConsoleWindowClass$/ : Global
key S-Prior => &PostMessage(ToItself, 277, 2, 0)
key S-Next => &PostMessage(ToItself, 277, 3, 0)
key S-Insert => &PostMessage(ToItself, 273, 65521, 0)
解説しますと、magic numberの意味は、それぞれ
WM_VSCROLL 277
SB_PAGEUP 2
SB_PAGEDOWN 3
WM_COMMAND 273
NTコンソールでの貼り付け 65521
です。NTコンソールのタイトルバーの右クリックメニューのメニューIDは
次のようなプログラムでブルートフォースで調べました。
(多くのアプリケーションではspy++で調べられますが、
こいつはうまくいかないようです。
こんなことをしないでも調べられるという方がいらっしゃいましたら、
後学のために教えて下さればうれしいです)
#include <windows.h>
int main(void)
{
int i;
HWND hwnd;
hwnd = (HWND)0x7b029e;
for (i = 65000; i < 66000; i++) {
PostMessage(hwnd, WM_COMMAND, i, 0);
}
return 0;
}
この成果として、それぞれのメニューIDが
65520 コピー
65521 貼り付け
65522 範囲指定
65523 スクロール
65524 検索
65525 全て選択
であるとわかりました。
このように、&PostMessageで直接あれこれすると怪しいことができます。
が、WM_COMMANDを送りつけるのは、違うバージョンだと動かないことも
ありうるので、あまりよくないかもしれません。
不安な場合は
key S-Insert => A-Space E P
としてもいいですが、一瞬メニューが見えて格好悪いです。
では、眠いのでこのへんで。
---- ---- ---- ---- ---- ---- ---- ----
| はなわ よしお (HANAWA Yoshio)
| mailto: hanawa@is.s.u-tokyo.ac.jp