掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
SendInputで指定したウィンドウに仮想キーを送るには? (ID:55618)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
SendInputを使ってタスクトレイのアイコンから指定したウィンドウに キーを送るプログラムで、行き詰っています。 ・タスクトレイのアイコンをクリックすると、メモ帳のウィンドウハンドルを 取得し、そこに「F1」のキーを送って、ヘルプを表示させたいのですが、 キーを送るタイミングが悪いのか、SetForegroundWindow()の使い方が悪いのかで ヘルプが表示される場合と、表示されない場合があります。 ・また、GetWindowThreadProcessId()、AttachThreadInput()をSetForegrondWindow() に併用してメモ帳のウィンドウを最前面に置いてみたりしましたが、 うまくいきませんでした。 大変行き詰っておりますので、どうかご教授の程宜しくお願い致します。 コードは以下の通りです。 case WM_TRAYICONMESSAGE: // 通知領域のアイコンに対して操作が行われた場合 switch(lParam) { case WM_LBUTTONDOWN: HWND hWndID; INPUT inputKey[2]; int cnt; hWndID = ::FindWindow("Notepad", NULL); for(cnt=0; cnt<2; cnt++){ inputKey[cnt].type = INPUT_KEYBOARD; inputKey[cnt].ki.wVk = VK_F1; inputKey[cnt].ki.wScan = MapVirtualKey(VK_F1, 0); if(cnt == 0){ inputKey[cnt].ki.dwFlags = 0; } else{ inputKey[cnt].ki.dwFlags = KEYEVENTF_KEYUP; } inputKey[cnt].ki.dwExtraInfo = 0; inputKey[cnt].ki.time = 0; ::SetForegroundWindow(hWndID); SendInput(2, inputKey, sizeof(INPUT)); } break; default: // タスクバーが再作成されたらアイコンを再登録 if(message == msgTaskBarRestart) AddNotifyIcon(); break;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.