WindowsでKernel Debuggerがどうやって動いているのか興味があったけど、なかなかそれについて調べられずにいたら、今日たまたまいい記事を見つけた。
http://www.vsj.co.uk/articles/display.asp?id=265
こういうのあるなら早く言ってほしい・・・。
これでだいたいの動きは納得がいくようになった。
最近IDAを利用してカーネルデバッグができるようになったということで、なかなかおもしろいかもしれない。IDAがないとアセンブラコード読む気にならないし。
My Daily Programming Life...
Showing posts with label Windows. Show all posts
Showing posts with label Windows. Show all posts
Windowsキーを無効にする
今作っているソフトで、一時的にWindowsキーを無効にしたいときがあった。
普通だとスタートメニューが表示されたり、ショートカットがいくつか使えたりするけど、
Windowsキーを利用するアプリを作っていて、自分のウィンドウにフォーカスがあるときだけはWindowsキーを無効にしたかった。
とりあえずその方法
まずは単純に無効にする方法。キーボードフックを利用すればよいらしい。
以下のURLを見れば全体が書いてある。
http://www.programmersheaven.com/mb/windows/344596/344596/how-to-disable-the-start-menu-button/
で、そこから、自分のウィンドウにフォーカスがあるときだけという条件を付けるカスタマイズ
フック関数を以下のようにする
これで自分がフォアグラウンドにいるときはWindowsキーが無効になる。
ただし、自分自身のウィンドウもWindowsキーのイベントを取得できなくなるので注意。
自分も必要な場合は・・・これからどうするか考えます。
普通だとスタートメニューが表示されたり、ショートカットがいくつか使えたりするけど、
Windowsキーを利用するアプリを作っていて、自分のウィンドウにフォーカスがあるときだけはWindowsキーを無効にしたかった。
とりあえずその方法
まずは単純に無効にする方法。キーボードフックを利用すればよいらしい。
hHook = SetWindowsHookEx( WH_KEYBOARD_LL , WinKeyHook , hInst , 0 );
以下のURLを見れば全体が書いてある。
http://www.programmersheaven.com/mb/windows/344596/344596/how-to-disable-the-start-menu-button/
で、そこから、自分のウィンドウにフォーカスがあるときだけという条件を付けるカスタマイズ
フック関数を以下のようにする
LRESULT CALLBACK WinKeyHook(int code, WPARAM wparam, LPARAM lparam)
{
PKBDLLHOOKSTRUCT key = (PKBDLLHOOKSTRUCT)lparam;
DWORD pid=0;
switch(wparam)
{
case WM_KEYDOWN:
case WiM_KEYUP:
case WM_SYSKEYDOWN:
case WM_SYSKEYUP:
if(key->vkCode==VK_LWIN || key->vkCode==VK_RWIN){
GetWindowThreadProcessId( GetForegroundWindow() , &pid );
if( GetCurrentProcessId() == pid ){
return 1;
}
}
}
return CallNextHookEx(NULL, code, wparam, lparam);
}
これで自分がフォアグラウンドにいるときはWindowsキーが無効になる。
ただし、自分自身のウィンドウもWindowsキーのイベントを取得できなくなるので注意。
自分も必要な場合は・・・これからどうするか考えます。
Windows Kernel
なんだかWindows Kernelのよさげな資料を発見
http://www.i.u-tokyo.ac.jp/edu/training/ss/msprojects/index.html
東大ではこんな授業やってんのかぁ。いいなぁ。でもこれ4年ぐらい前の話だな。
今もやってるのかな。
http://www.i.u-tokyo.ac.jp/edu/training/ss/msprojects/index.html
東大ではこんな授業やってんのかぁ。いいなぁ。でもこれ4年ぐらい前の話だな。
今もやってるのかな。
キーボードを使いやすく
最近どうも右手、右腕が変。なんか気持ち悪い。なんか常に違和感がある。痛い訳じゃないしかゆいわけでもないんだけど。
おそらくマウスの使いすぎなんだと思う。右肩も痛い。プログラマーなんだから、もっとキーボードで操作出来るようになればいいんだと思って、勉強中。エディタももっときちんと使えるように練習しなくちゃ。
今回は、まずWindowsでCapsとCtrlの入れ替え。
http://uguisu.skr.jp/Windows/winCaps.html
を見てやった。
Controlは左下にあるんだけど、それがちょっと使いにくいと感じて替えた。それに慣れてるからまだ間違えるけど、あきらかにCapsよりCtrlの方が使う頻度が高いのに、打ちにくい場所にあってもしょうがないし。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,06,00,00,00,3a,00,1d,00,1d,00,3a,00,\
29,00,79,00,5b,e0,7b,00,38,e0,70,00,00,00,00,00
これをテキストに保存して.regという拡張子を付ければ、僕の設定になる。
Ctrl ←→ Caps Lock
変換(スペースの右) → 全角/半角
無変換 → Windows Key
かな → Alt
に変換しているはず。
あとはキーボードショートカット
http://qune.cside.com/archives/000515.html
http://homepage1.nifty.com/keyboard_maniac/SpecialKT.htm
のとか。
エクスプローラの拡張とか、もっと使いやすいファイラとか誰か知ってたら教えてください。
2009/3/20 追記
各ユーザー別にキーボード設定したい場合はHKEY_CURRENT_USER\Keyboard Layout にScancode mapを作ればよいらしい
おそらくマウスの使いすぎなんだと思う。右肩も痛い。プログラマーなんだから、もっとキーボードで操作出来るようになればいいんだと思って、勉強中。エディタももっときちんと使えるように練習しなくちゃ。
今回は、まずWindowsでCapsとCtrlの入れ替え。
http://uguisu.skr.jp/Windows/winCaps.html
を見てやった。
Controlは左下にあるんだけど、それがちょっと使いにくいと感じて替えた。それに慣れてるからまだ間違えるけど、あきらかにCapsよりCtrlの方が使う頻度が高いのに、打ちにくい場所にあってもしょうがないし。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,06,00,00,00,3a,00,1d,00,1d,00,3a,00,\
29,00,79,00,5b,e0,7b,00,38,e0,70,00,00,00,00,00
これをテキストに保存して.regという拡張子を付ければ、僕の設定になる。
Ctrl ←→ Caps Lock
変換(スペースの右) → 全角/半角
無変換 → Windows Key
かな → Alt
に変換しているはず。
あとはキーボードショートカット
http://qune.cside.com/archives/000515.html
http://homepage1.nifty.com/keyboard_maniac/SpecialKT.htm
のとか。
エクスプローラの拡張とか、もっと使いやすいファイラとか誰か知ってたら教えてください。
2009/3/20 追記
各ユーザー別にキーボード設定したい場合はHKEY_CURRENT_USER\Keyboard Layout にScancode mapを作ればよいらしい
