VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 キーボード・キー操作関係のメニュー
1.基本的なキー操作色々
2.特殊キーの状態を取得及び設定する
3.Win32 API関数を使ってのEnterキーでの自由自在フォーカス移動
4.SendInput 関数のDLL化による簡単キーボード操作
5.キーストロークをシミュレートする(SendInput関数使用例)
6.
7.スナップショットをファイルに保存及び印刷(SendInput関数使用例)
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.


4.SendInput 関数のDLL化による簡単キーボード操作
1.SendInput 関数のDLL化による簡単キーボード操作
2. 
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:SendInputV6  プロジェクト→参照設定→参照ボタン→ SendInputV6.dll を参照して下さい。
使用 API:SendInput 他11個ほどDLL内で使っております。

その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。
    :
このページのトップへ移動します。 1.SendInput 関数のDLL化による簡単キーボード操作
Win2000 以降は、keybd_event 関数の代わりに SendInput を使ってくださいとの Microsoft からのアナウンス等もあり、SendInput 関数を使ったキー操作例をと思ったのですが、SendInput 関数は、結構操作も複雑で面倒なのと、どうせ実使用する場合もSendInput 関数だけの操作では済まないので、API に不慣れな人にでも簡単に使用できるようにと思い必要な機能を DLL にまとめたものを作ってみました。以下はそのDLLの使用例です。

SendInputV6機能としては、下記のようなものがあります。

SendInputV6.dll の機能(個別の機能単位でも使用できますし、Excel VBA 上でも使用可)
  GetCaption     アクティブウィンドウのタイトルを取得
  fGetForGrdWindow() アクティブウィンドウのハンドルを取得
  fSetForGrdWindow() 指定のウィンドウをトップ位置に移動しアクティブにする
  KeyDown()      指定キーのキーダウン操作
  KeyReSet()     指定の一連のキー操作を初期化する
  KeyStroke()     指定の一連のキー操作を一括で実行
  KeyUP()       指定キーのキーアップ操作
  WaitTime()     指定時間待つ安全な待機関数

SendInputV6 は下記より、ダウンロードして、EXE と同じフォルダーにでも解凍し、参照設定してお使い下さい。
ダウンロード先 http://hanatyan.sakura.ne.jp/freesoft/SendInputV6.zip
プロジェクト→参照設定→参照ボタン→ SendInputV6.dll を参照して下さい。
レジストリに登録/削除するには、ファイル名を指定して実行から下記をコードを実行
登録 regsvr32 SendInputV6.dllが保存されているフルパス\SendInputV6.dll
削除 regsvr32 /u SendInputV6.dllが保存されているフルパス\SendInputV6.dll

Dim SI As New SendInputV6.Class1 のように宣言すれば、後は、下記のようにして使用できます。
Call SI.WaitTime(500)

'---------------------------------------------------------------------------------------------------
Option Explicit

Private Myhwnd As Long '対象ウィンドウのハンドル

Private Sub Command1_Click()
'別途、ハンドルを取得しているならこの部分は必要ありません。
  'アクティブウィンドウのハンドルを取得。
  '引数は、各メッセージボックスを表示している時間を指定(指定しなければ、3秒間表示)
  Dim SI As New SendInputV6.Class1
  Myhwnd = SI.fGetForGrdWindow(1500)
  '下記も参考に表示しているだけです。
  Label1.Caption = " Handle : " & hWnd
  Label2.Caption = "Caption : " & SI.GetCaption()
End Sub

Private Sub Command2_Click()
  Dim myText As String
  'テスト用のデータを作成
  myText = "このDLLは、他のアプリにキーストロークをシミュレートする為の" _
              & vbCrLf & "機能を纏めたDLLです。"
  'データをクリップボードに貼り付けます。
  Clipboard.Clear
  Clipboard.SetText myText
  Dim SI As New SendInputV6.Class1
  If Myhwnd <> 0 Then
   '指定のウィンドウをアクティブにする(最小化の場合は元のサイズで表示)
   Call SI.fSetForGrdWindow(Myhwnd)
   'MsgWaitForMultipleObjects API を使っての安全な待機関数(ミリ秒単位で指定)
   Call SI.WaitTime(500)      'その間、0.5秒待つ(最小化になっている場合もあるので)

   '下記のように実行したいキー操作をマクロの記録のように書き込んで下さい。
   Call SI.KeyReSet         'キー操作の初期化(使用した変数等の初期化)
   Call SI.KeyDown(vbKeyA)     'Aキーの押し下げの動作を記録(実際の操作は行われない)
   Call SI.KeyUp(vbKeyA)      'Aキーの解放の動作を記録
   Call SI.KeyDown(vbKeyB)     '同様に夫々のキー操作を記録
   Call SI.KeyUp(vbKeyB)
   Call SI.KeyDown(vbKeyReturn)   '改行
   Call SI.KeyUp(vbKeyReturn)
   Call SI.KeyDown(vbKeyControl)  '続けてクリップボードのテキストをペーストします。
   Call SI.KeyDown(vbKeyV)
   Call SI.KeyUp(vbKeyV)
   Call SI.KeyUp(vbKeyControl)
   Call SI.KeyDown(vbKeyReturn)   '改行
   Call SI.KeyUp(vbKeyReturn)
   Call SI.KeyStroke        '上記一連のキー操作を一括で実行(ここで初めてキー操作を実行)
  End If
End Sub

Private Sub Command3_Click()
'クラス名又はキャプションタイトルを与えてウィンドウのハンドルを取得
  Dim SI As New SendInputV6.Class1
  Dim title As String
  Dim ClsName As String
  'クラス名又はキャプションタイトルのどちらか一つでもOK
  ClsName = "Notepad"    'クラス名
  title = "無題 - メモ帳"  'キャプションタイトル
  Myhwnd = SI.fGetFindWindowEx(0&, 0&, ClsName, title)
  '下記は、参考に表示しているだけです。
  Label1.Caption = " Handle : " & Myhwnd
  Label2.Caption = "Caption : " & SI.GetCaption()

End Sub

 実行結果等の図及び配置図
 keyboard03_01

SendInput 関数自体の使用例は下記で紹介しております。(上記が理解でき使用できるようなら試して見て下さい。)
 キーストロークをシミュレートする(SendInput関数使用例)

このページのトップへ移動します。 2. 


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
SendInput 関数  キーストローク、マウスの動き、ボタンのクリックなどを合成します
プログラム上からキーボードを操作する プログラムでキーを押す
他のアプリのショートカットを操作する 他のアプリケーションのショートカットキーをプログラムから操作する


このページのトップへ移動します。