タイトル : Re: 指定のハンドルに矢印キーの送信 postmessage 投稿日 : 2018/08/15(Wed) 18:17 投稿者 : 魔界の仮面弁士
> ある、パッケージアプリがあり、そこへの入力をある程度自由化しようと試みています。 IAccessible インターフェイスの accSelect メソッド / accDoDefaultAction メソッドを使ってみるのはいかがでしょう。 > 選択項目が3つあり、下段に OK、キャンセル、ヘルプボタンがあります。 その選択項目とは何のオブジェクトですか? ListBox なのか Button なのか、あるいは単に描画されているだけなのか。 > hWnd = FindWindowEx(0, 0, "ウィンドウクラス", "hogehoge") 'このウィンドウを選択 > Cwnd = GetWindow(hwnd, 5) > Cwnd = GetWindow(Cwnd, 2) 5 は GW_CHILD 、2 は GW_HWNDNEXT ですね。 > そこで、矢印キーを送信したのですが選択肢が動きません そのアプリは、WM_KEYUP / WM_KEYDOWN を処理する仕様になっているのでしょうか。 処理しているとしたら、親ウィンドウと子ウィンドウ、どちらで受ける仕様でしょうか。 (たとえば、GetAsyncKeyState にて判定する実装だったりするかもしれません) > Ret = PostMessage(Cwnd, WM_KEYUP, VK_DOWN, 1) WM_KEYUP なのに lParam (というか lKeyData) に 1 を渡しているのは意図的なものですか? http://chokuto.ifdef.jp/urawaza/message/WM_KEYUP.html > Cwnd P WM_KEYUP nVirtKey:VK_DOWN cRpeat:1 ScanCode:50 fExtended:1 ... > Scancode? Extennted ? cRepeat = CLng(lKeyData And &H0000FFFF&)'\ &H00000001& ScanCode = CLng(lKeyData And &H00FF0000&) \ &H00010000& fExtended = CLng(lKeyData And &H01000000&) \ &H01000000& Reserved = CLng(lKeyData And &H1E000000&) \ &H02000000& fAltDown = CLng(lKeyData And &H20000000&) \ &H20000000& fRepeat = CLng(lKeyData And &H40000000&) \ &H40000000& fUp = CLng(lKeyData And &H80000000&) \ &H80000000& |