掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Dos窓で? (ID:123950)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
最近少し忙しかったので既に遅いけど・・・(夏休みが一週ずれたしorz) VB6でEnumWindowsを使ったサンプルを貼っておきますね。 'Form側 Private Sub Form_Load() 'タスクIDを外部変数に保存 glngShellProcID = Shell("cmd.exe /c dir /?") End Sub 'Ctrl+C送信ボタン Private Sub cmdSend_Click() 'ウィンドウの列挙 Call EnumWindows(AddressOf EnumWindowProc, &H0) End Sub '標準モジュール側 Public glngShellProcID As Long 'EnumWindowのコールバック関数 Public Function EnumWindowProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean Dim lngProcID As Long Dim lngThreadID As Long 'ハンドルからスレッド、プロセスIDを求める lngThreadID = GetWindowThreadProcessId(hwnd, lngProcID) 'Shellしたものと同じ? If lngProcID = glngShellProcID Then 'Ctrl+Cを送る(キーエミュ) Call PostMessage(hwnd, WM_KEYDOWN, vbKeyControl, GetlParam(vbKeyControl, False)) Call PostMessage(hwnd, WM_KEYDOWN, vbKeyC, GetlParam(vbKeyC, False)) Call PostMessage(hwnd, WM_KEYUP, vbKeyC, GetlParam(vbKeyC, True)) Call PostMessage(hwnd, WM_KEYUP, vbKeyControl, GetlParam(vbKeyControl, True)) End If EnumWindowProc = True End Function Public Function GetlParam(lngKeyCode As Long, blnUp As Boolean) As Long Dim lngVK As Long Dim lnglParam As Long lngVK = MapVirtualKey(lngKeyCode, 0) lnglParam = 1 Or (lngVK * (2 ^ 16)) If blnUp Then lnglParam = lnglParam Or &HC0000000 End If 'ここは他の拡張キーでも同じ事をする必要があるが今回はこれだけなので・・・ If lngKeyCode = vbKeyControl Then lnglParam = lnglParam Or &H1000000 End If GetlParam = lnglParam End Function
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.