- 日時: 2013/04/05 09:15
- 名前: VBレスキュー(花ちゃん)
- ***********************************************************************************
* カテゴリー:[キー操作][][] * * キーワード:キーストローク ,Excel VBA,キー入力,キーコード,他のアプリ,SendKeys * *********************************************************************************** '=================================================================================================== '投 稿 日:2012.07.09 '投 稿 者:VBレスキュー(花ちゃん) 'SampleNo:597 2012.07.07 @ 2012.07.07 'タイトル:他のアプリ上でのキー操作用に特化したDLLの使用例(597) - VB6.0 '動作確認:Windows Vista / Windows 7 / VB6.0(SP6) '--------------------------------------------------------------------------------------------------- '別途、SendInputV6.dll をこの exe と同じフォルダーにコピーしておいて下さい。 '(できれば、Windows\System32 フォルダーに入れておいた方が便利かと) 'プロジェクト→参照設定→参照ボタン→ \このexeの起動フォルダー\SendInputV6.dll を参照して下さい。 'レジストリーに登録/削除するには、ファイル名を指定して実行から下記をコードを実行 '登録 regsvr32 SendInputV6.dllがほぞんされているフルパス\SendInputV6.dll '削除 regsvr32 /u SendInputV6.dllがほぞんされているフルパス\SendInputV6.dll '========1=========2=========3=========4=========5=========6=========7=========8=========9=========0 SendInput 関数用のDLLを作るなら、他のアプリにキーストロークを送るのに必要な機能を一纏めにしたら かなり便利になり誰にでも簡単に使用する事ができるのではないかと思い作ってみました。 Excel の画面にショートカットキーを送って操作したいような場合やWeb上での各パスワードを入力するような 場合とか、他のアプリ上で、キー操作をしたいような時に気軽に使用出来て便利かと思います。
SendInput 関数(VB6.0用)については、下記に掲載しておりますので参考にして下さい。 (キーストロークをシミュレートする) http://www.hanatyan.sakura.ne.jp/vbhlp/SendInput.htm
機能としては、下記のようなものがあります。
SendInputV6.dll の機能(個別の機能単位でも使用できますし、Excel VBA 上でも使用可) GetCaption アクティブウィンドウのタイトルを取得 fGetForGrdWindow() アクティブウィンドウのハンドルを取得 fSetForGrdWindow() 指定のウィンドウをトップ位置に移動しアクティブにする KeyDown() 指定キーのキーダウン操作 KeyReSet() 指定の一連のキー操作を初期化する KeyStroke() 指定の一連のキー操作を一括で実行 KeyUP() 指定キーのキーアップ操作 WaitTime() 指定時間待つ安全な待機関数
SendInputV6.dll は、VB6.0 の ActiveX DLL で作成しております。 不具合や要望等ありましたら、雑談用掲示板にでも書き込み下さい。 尚、機能や動作は、VB.NET 用と同様に設定しておりますし、VB6.0 で作成しているので、Excel VBA 上でも 同様に使用できます。 http://hanatyan.sakura.ne.jp/patio/read.cgi?no=320
下記より、ダウンロードして、EXE と同じフォルダーにでも解凍し、参照設定してお使い下さい。 ダウンロード先 http://www.hanatyan.sakura.ne.jp/freesoft/SendInputV6.zip
'---------------------------------------------------------------------------------------------------
Option Explicit
Private Myhwnd As Long '対象ウィンドウのハンドル
Private Sub Command1_Click() '別途、ハンドルを取得しているならこの部分は必要ありません。 'アクティブウィンドウのハンドルを取得。 '引数は、各メッセージボックスを表示している時間を指定(指定しなければ、3秒間表示) Dim SI As New SendInputV6.Class1 Myhwnd = SI.fGetForGrdWindow(1500) '下記も参考に表示しているだけです。 Label1.Caption = " Handle : " & Myhwnd 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
実行結果等の図及び配置図(画像をクリックすると元のサイズで見る事ができます。)
|