タイトル : Re^4: 残念ながら・・・ 投稿日 : 2006/02/26(Sun) 21:55 投稿者 : YAS
まず,keybd_eventの例です。(VB2005です) FD55.COMをダブルクリックして起動しておきます。 タスクマネージャでntvdn.exeのプロセスIDを調べておきます。 フォームにButtonコントロールを1つ配置します。 下のコードを貼り付けます。 ntvdn.exeのプロセスIDにAppActivate関数の引数を書き換えます。 実行して,フォームのButtonコントロールをクリックします。 「FDを終了しますか?」とFDがメッセージを表示します。 Imports System.Runtime.InteropServices Imports System.Threading.Thread Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AppActivate(10752) 'タスクマネージャを見て,プロセスID(PID)を入れる Sleep(100) KeyBoardEvent.Send(bVk.VK_ESCAPE) End Sub End Class Public Class KeyBoardEvent Private Const KEYEVENTF_KEYUP As Integer = &H2 <DllImport("user32.dll")> Public Shared Sub keybd_event( _ ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) End Sub <DllImport("user32.dll")> Public Shared Function MapVirtualKey( _ ByVal wCode As Integer, _ ByVal wMapType As Integer) _ As Integer End Function Public Shared Sub Send(ByVal bVk As Byte) Call keybd_event(bVk, MapVirtualKey(CInt(bVk), 0), _ ExtendedKeyFlag(bVk) Or 0, 0) Call keybd_event(bVk, MapVirtualKey(CInt(bVk), 0), _ ExtendedKeyFlag(bVk) Or KEYEVENTF_KEYUP, 0) End Sub Private Shared Function ExtendedKeyFlag(ByVal Key As Byte) As Byte Return 0 'ExtendedKeyの処理を省略しています(矢印キーはExtendedKeyなので注意) End Function End Class Public Enum bVk As Byte VK_ESCAPE = &H1B 'ESC key VK_X = &H58 'X key VK_C = &H43 'C key VK_D = &H44 'D key VK_R = &H52 'R key VK_S = &H53 'S key VK_F = &H46 'F key VK_T = &H54 'T key VK_L = &H4C 'L key VK_U = &H55 'U key End Enum |