適当に日々あったこととか書いてます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
SHORT GetKeyState(
int nVirtKey // 仮想キーコード
);
指定された仮想キーの状態を取得します。状態とは、キーが押されているか、押されていないか、トグルになっているかどうか( オンとオフの 2 つがあり、キーを押すたびに入れ替わります)を表します。
<パラメータ>
・nVirtKey
[入力]仮想キーコードを指定します。
希望の仮想キーが文字キーまたは数字キー(A~Z、a~z、0~9)である場合、nVirtKey にその文字の ASCII コードを指定しなければなりません。他のキーの場合は、仮想キーコードを指定しなければなりません。
ヨーロッパなどの英語以外のキーボードレイアウトを使っている場合、A~Z と 0~9 の各範囲に相当する ASCII コードは、アクセント付きを含め、ほとんどの文字を表すために使われています。
たとえば、ドイツ語のキーボードレイアウトでは、ASCII の「O」(0x4F)の値に相当する仮想キーは「o」キーを意味しますが、VK_OEM_1 は「ウムラウト(¨)付きの o」キーを意味します。
<戻り値>
戻り値は、指定された仮想キーの状態を表します。各値は次のことを意味します。
最上位ビット(0x0080?)が 1 のときはキーが押されていることを、0 のときはキーが押されていないことを示します。
最下位ビット(0x0001)が 1 のときはキーがトグル状態にあることを示します。
たとえば、CapsLock キーが ON になっているときは、トグル状態になります。
最下位ビットが 0 のときはキーが OFF になっていて、トグルが解除されていることを示します。
キーボードにトグルキーのインジケータランプが用意されている場合、キーがトグル状態になっているとランプは点灯し、トグル解除状態ではランプは消灯します。
<解説>
スレッドがメッセージキューからキーメッセージを読み出すたびに、この関数が返すキーの状態は変化します。
キーの状態は、ハードウェアによる割り込みレベルの状態を反映しません。
割り込みレベルの情報を取得するには、GetAsyncKeyState 関数を使ってください。
アプリケーションは、キーボード入力メッセージに応じて GetKeyState を呼び出します。この関数は、入力メッセージが生成されたときのキーの状態を取得します。
すべての仮想キーの状態を取得するには、GetKeyboardState 関数を使います。
<対応情報>
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダーファイル:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
引用:ttp://msdn.microsoft.com/ja-jp/library/cc364676.aspx
<使用メモ>
最上位ビットって書かれてるけど、実際取得すると
0x0000(初回)→0x0081(押す)→0x0081(押してる)→0x0001(放す)
ってなってる気がする(while文で永久ループで取得し続けた場合)。
int nVirtKey // 仮想キーコード
);
指定された仮想キーの状態を取得します。状態とは、キーが押されているか、押されていないか、トグルになっているかどうか( オンとオフの 2 つがあり、キーを押すたびに入れ替わります)を表します。
<パラメータ>
・nVirtKey
[入力]仮想キーコードを指定します。
希望の仮想キーが文字キーまたは数字キー(A~Z、a~z、0~9)である場合、nVirtKey にその文字の ASCII コードを指定しなければなりません。他のキーの場合は、仮想キーコードを指定しなければなりません。
ヨーロッパなどの英語以外のキーボードレイアウトを使っている場合、A~Z と 0~9 の各範囲に相当する ASCII コードは、アクセント付きを含め、ほとんどの文字を表すために使われています。
たとえば、ドイツ語のキーボードレイアウトでは、ASCII の「O」(0x4F)の値に相当する仮想キーは「o」キーを意味しますが、VK_OEM_1 は「ウムラウト(¨)付きの o」キーを意味します。
<戻り値>
戻り値は、指定された仮想キーの状態を表します。各値は次のことを意味します。
最上位ビット(0x0080?)が 1 のときはキーが押されていることを、0 のときはキーが押されていないことを示します。
最下位ビット(0x0001)が 1 のときはキーがトグル状態にあることを示します。
たとえば、CapsLock キーが ON になっているときは、トグル状態になります。
最下位ビットが 0 のときはキーが OFF になっていて、トグルが解除されていることを示します。
キーボードにトグルキーのインジケータランプが用意されている場合、キーがトグル状態になっているとランプは点灯し、トグル解除状態ではランプは消灯します。
<解説>
スレッドがメッセージキューからキーメッセージを読み出すたびに、この関数が返すキーの状態は変化します。
キーの状態は、ハードウェアによる割り込みレベルの状態を反映しません。
割り込みレベルの情報を取得するには、GetAsyncKeyState 関数を使ってください。
アプリケーションは、キーボード入力メッセージに応じて GetKeyState を呼び出します。この関数は、入力メッセージが生成されたときのキーの状態を取得します。
すべての仮想キーの状態を取得するには、GetKeyboardState 関数を使います。
<対応情報>
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダーファイル:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
引用:ttp://msdn.microsoft.com/ja-jp/library/cc364676.aspx
<使用メモ>
最上位ビットって書かれてるけど、実際取得すると
0x0000(初回)→0x0081(押す)→0x0081(押してる)→0x0001(放す)
ってなってる気がする(while文で永久ループで取得し続けた場合)。
PR
SHORT GetAsyncKeyState(
int vKey // 仮想キーコード
);
関数呼び出し時にキーが押されているかどうか、また、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうかを判定します。
<パラメータ>
・vKey
[入力]最大 256 とおりの仮想キーコードのいずれかを指定します。
Windows NT/2000:特定のキーの左キーと右キーを区別できます。詳細については、「解説」を参照してください。
<戻り値>
関数が成功すると、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうか、およびキーが現在押されているかどうかを示す値が返ります。
最上位ビット(0x8000)がセットされたときは現在そのキーが押されていることを示し、最下位ビット(0x0001)がセットされたときは前回の GetAsyncKeyState 関数呼び出し以降にそのキーが押されたことを示します。
他のスレッド( またはプロセス)のウィンドウがキーボードフォーカスを備えている場合は、0 が返ります。
Windows 95:Windows 95 は、左キーと右キーを区別するための定数をサポートしていません。これらの定数を指定して GetAsyncKeyState を呼び出すと、0 が返ります。
<解説>
GetAsyncKeyState 関数は、マウスボタンの状態も取得できます。
ただしこの関数は、物理的なボタンのマップ先である論理的なマウスボタンの状態ではなく、物理的なマウスボタンの状態を取得します。
たとえば、GetAsyncKeyState(VK_LBUTTON) を呼び出すと、そのボタンが論理的な左ボタンと右ボタンのどちらに割り当てられているかにかかわりなく(後者は「左利き用」の割り当て)、常に物理的な左ボタンの状態を返します。
物理的なマウスボタンと論理的なマウスボタンの対応を調べるには、次の呼び出しを行います。
GetSystemMetrics(SM_SWAPBUTTON)
この呼び出しは、マウスボタンの左右が入れ替わっているときに TRUE を返します。
vKey パラメータの値として、VK_SHIFT、VK_CONTROL、VK_MENU の各仮想キーコード定数を指定できます。この場合、左右を区別することなく、Shift、Ctrl、Alt の各キーの状態を取得できます。
<対応情報>
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダーファイル:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
引用:ttp://msdn.microsoft.com/ja-jp/library/cc364583.aspx
<使用メモ>
キーボード押されたときの情報検出に使用。
でも別のアプリとかで同じ関数が使われてたら、入力情報はまともに検出できなくなる可能性が高い・・・のか?
少なくとも同時に動作させたらどっちかしか検出できなかった。
もしかしたら他のアプリの使われ方次第でどっちかが動作不良起こす?
0x0000(初回)→0x8001(押す)→0x8000(押し続ける)→0x0000(放す)→0x0001(押してすぐ放す)→0x0000(次に取得)
int vKey // 仮想キーコード
);
関数呼び出し時にキーが押されているかどうか、また、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうかを判定します。
<パラメータ>
・vKey
[入力]最大 256 とおりの仮想キーコードのいずれかを指定します。
Windows NT/2000:特定のキーの左キーと右キーを区別できます。詳細については、「解説」を参照してください。
<戻り値>
関数が成功すると、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうか、およびキーが現在押されているかどうかを示す値が返ります。
最上位ビット(0x8000)がセットされたときは現在そのキーが押されていることを示し、最下位ビット(0x0001)がセットされたときは前回の GetAsyncKeyState 関数呼び出し以降にそのキーが押されたことを示します。
他のスレッド( またはプロセス)のウィンドウがキーボードフォーカスを備えている場合は、0 が返ります。
Windows 95:Windows 95 は、左キーと右キーを区別するための定数をサポートしていません。これらの定数を指定して GetAsyncKeyState を呼び出すと、0 が返ります。
<解説>
GetAsyncKeyState 関数は、マウスボタンの状態も取得できます。
ただしこの関数は、物理的なボタンのマップ先である論理的なマウスボタンの状態ではなく、物理的なマウスボタンの状態を取得します。
たとえば、GetAsyncKeyState(VK_LBUTTON) を呼び出すと、そのボタンが論理的な左ボタンと右ボタンのどちらに割り当てられているかにかかわりなく(後者は「左利き用」の割り当て)、常に物理的な左ボタンの状態を返します。
物理的なマウスボタンと論理的なマウスボタンの対応を調べるには、次の呼び出しを行います。
GetSystemMetrics(SM_SWAPBUTTON)
この呼び出しは、マウスボタンの左右が入れ替わっているときに TRUE を返します。
vKey パラメータの値として、VK_SHIFT、VK_CONTROL、VK_MENU の各仮想キーコード定数を指定できます。この場合、左右を区別することなく、Shift、Ctrl、Alt の各キーの状態を取得できます。
<対応情報>
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダーファイル:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
引用:ttp://msdn.microsoft.com/ja-jp/library/cc364583.aspx
<使用メモ>
キーボード押されたときの情報検出に使用。
でも別のアプリとかで同じ関数が使われてたら、入力情報はまともに検出できなくなる可能性が高い・・・のか?
少なくとも同時に動作させたらどっちかしか検出できなかった。
もしかしたら他のアプリの使われ方次第でどっちかが動作不良起こす?
0x0000(初回)→0x8001(押す)→0x8000(押し続ける)→0x0000(放す)→0x0001(押してすぐ放す)→0x0000(次に取得)
BOOL GetAltTabInfo(
HWND hwnd,
int iItem,
PALTTABINFO pati,
LPTSTR pszItemText,
UINT cchItemText
);
指定したウィンドウがアプリケーション切り替え(ALT+TAB)ウィンドウの場合、そのウィンドウのステータス情報を取得します。
<パラメータ>
・hwnd
ステータス情報を取得するウィンドウのハンドルを指定します。このウィンドウは、アプリケーション切り替えウィンドウでなければなりません。
・iItem
アプリケーション切り替えウィンドウ内のアイコンのインデックスを指定します。pszItemText に NULL 以外を指定すると、対応する項目の名前が pszItemText の指す文字列にコピーされます。このパラメータに -1 を指定すると、項目の名前はコピーされません。
・pati
ステータス情報を受け取る 構造体へのポインタを指定します。
・pszItemText
項目の名前を受け取る文字列へのポインタを指定します。NULL を指定すると、項目の名前はコピーされません。
・cchItemText
pszItemText が指すバッファのサイズをバイト単位で指定します。
<戻り値>
関数が成功すると、0 以外の値が返ります。
関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
<解説>
アプリケーション切り替えウィンドウを使って、実行中の別のアプリケーションウィンドウに切り替えることができます。
アプリケーション切り替えウィンドウを表示するには、ALT+TAB を押します。
リストからアプリケーションを選ぶには、ALT キーを押しながら TAB キーを押すと、リスト内の項目を移動します。SHIFT キーを同時に押すと、リスト内を逆に移動することができます。
引用:ttp://msdn.microsoft.com/ja-jp/library/cc410863.aspx
<使用メモ>
とりあえずXPでアプリ切替のハンドル取得して入れてみたけど関数失敗の0が帰ってきてた模様。結局使わずに終了。
拡張エラーは未取得なんで未確認。
HWND hwnd,
int iItem,
PALTTABINFO pati,
LPTSTR pszItemText,
UINT cchItemText
);
指定したウィンドウがアプリケーション切り替え(ALT+TAB)ウィンドウの場合、そのウィンドウのステータス情報を取得します。
<パラメータ>
・hwnd
ステータス情報を取得するウィンドウのハンドルを指定します。このウィンドウは、アプリケーション切り替えウィンドウでなければなりません。
・iItem
アプリケーション切り替えウィンドウ内のアイコンのインデックスを指定します。pszItemText に NULL 以外を指定すると、対応する項目の名前が pszItemText の指す文字列にコピーされます。このパラメータに -1 を指定すると、項目の名前はコピーされません。
・pati
ステータス情報を受け取る 構造体へのポインタを指定します。
・pszItemText
項目の名前を受け取る文字列へのポインタを指定します。NULL を指定すると、項目の名前はコピーされません。
・cchItemText
pszItemText が指すバッファのサイズをバイト単位で指定します。
<戻り値>
関数が成功すると、0 以外の値が返ります。
関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
<解説>
アプリケーション切り替えウィンドウを使って、実行中の別のアプリケーションウィンドウに切り替えることができます。
アプリケーション切り替えウィンドウを表示するには、ALT+TAB を押します。
リストからアプリケーションを選ぶには、ALT キーを押しながら TAB キーを押すと、リスト内の項目を移動します。SHIFT キーを同時に押すと、リスト内を逆に移動することができます。
引用:ttp://msdn.microsoft.com/ja-jp/library/cc410863.aspx
<使用メモ>
とりあえずXPでアプリ切替のハンドル取得して入れてみたけど関数失敗の0が帰ってきてた模様。結局使わずに終了。
拡張エラーは未取得なんで未確認。