○アクティブウィンドウにキーボード操作を送る



キーボードから入力したときと同様にアクティブ ウィンドウにキーを渡したいと思います
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++