○アクティブウィンドウにキーボード操作を送る
キーボードから入力したときと同様にアクティブ ウィンドウにキーを渡したいと思います
VBで言うSendKeysと同じような動作をするものを作成してみました
//仮想キーコードをアクティブウィンドウに送信することができます
void SendKey(unsigned char code)
{
keybd_event(code,0x00,KEYEVENTF_EXTENDEDKEY|0,0);
keybd_event(code,0x00,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);
}
//aからz、AからZ、0から9、スペース にて作成された文字列を
//仮想キーコードに変換してアクティブウィンドウに送信することができます
void SendStr(char*str){
while(*str){
if('a'<=*str && 'z'>=*str){
SendKey(*str-32);
}else{
SendKey(*str);
}
str++;
}
}
■上記関数を使ってプリントスクリーンのキーを押してみます
SendKey(VK_SNAPSHOT); //PrtScrを押す
プリントスクリーンの仮想キーコードをSendKeyの引数に渡して呼び出すことにより実現できます
しかし、ALT+PrtScr を同時に押したいときには、先にALT(VK_LMENU)を押しながらPrtScrを押す必要が
あるため次のように修正する必要があります
keybd_event(VK_LMENU,0x00,KEYEVENTF_EXTENDEDKEY|0,0); //ALTキーを押す
SendKey(VK_SNAPSHOT); //PrtScrを押す
keybd_event(VK_LMENU,0x00,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0); //ALTキーを放す
■次に文字列をアクティブウィンドウに送信してみます
SendStr("abcd 1234");
上記関数を呼び出すことにより現在アクティブなウィンドウに"abcd 1234"を送ることができます
(補足)仮想キーコードを調べるには、
仮想キーコードは、WINUSER.H ヘッダファイルで記載されています。
仮想キーコードのマクロを調べたい場合には、
WINUSER.Hを開いて、VK_ で検索すると見つかります。
▲トップページ
>
Windows と C++