C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ctrl-Gを出力(VisualBasic6)


(過去ログ 21 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■9070 / inTopicNo.1)  ctrl-Gを出力(VisualBasic6)
  
□投稿者/ よしろう (1回)-(2007/10/18(Thu) 10:43:41)

分類:[VB6 以前] 

初めまして。
キーボード入力(例えばctrl-G)を必要とする市販アプリケーションがあるが、手を加えられない為
別のVB6プログラムでctrl-Gを出力して操作したいのですか方法はありますでしょうか?
宜しくお願い致します。
引用返信 編集キー/
■9081 / inTopicNo.2)  Re[1]: ctrl-Gを出力(VisualBasic6)
□投稿者/ よしろう (2回)-(2007/10/18(Thu) 14:30:17)
質問を補足します。
MSDNを調べてたのですが、keybd_event関数を使っての
VisualBasicVer6のパラメーター記述方法がよくわかりません。
標準関数ではなさそうなので、下記のuser32.libを呼ぶ必要があるのでしょうか。

MSDN Helpより。

VOID keybd_event(
BYTE bVk, // virtual-key code
BYTE bScan, // hardware scan code
DWORD dwFlags, // flags specifying various function options
DWORD dwExtraInfo // additional data associated with keystroke
);

QuickInfo
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Requires version 1.0 or later.
Header: Declared in winuser.h.
Import Library: Use user32.lib.

下記サンプルを見つけたのですが、どうもVB6ではエラーになって
しまいます。(CapsLockを押すサンプル)

Private Const KEYEVENTF_EXTENDEDKEY As Integer = &H1
Private Const KEYEVENTF_KEYUP As Integer = &H2
Private Const VK_CAPSLOCK As Integer = &H14

Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Integer, _
ByVal dwExtraInfo As Integer)

Private Sub Command1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button23.Click
' Capslockキーを押す
keybd_event(VK_CAPSLOCK, &H45, KEYEVENTF_KEYUP, 0)
End Sub
引用返信 編集キー/
■9097 / inTopicNo.3)  Re[2]: ctrl-Gを出力(VisualBasic6)
□投稿者/ よしろう (3回)-(2007/10/18(Thu) 17:23:53)
なんとか自己解決できました。
「[ctrl][G]とキーストロークを合成して別アプリケーションに送信」
次のコードになりました。

----------------------------
Option Explicit

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_KEYCTRL = &HA2

Private Sub Command1_Click()
'Wait 5 secs
Timer1.Interval = 5000
Timer1.Enabled = True
Me.Visible = False
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False
Timer1.Interval = 0

Call keybd_event(KEYEVENTF_KEYCTRL, 0, 0, 0)
Call keybd_event(Asc("G"), 0, 0, 0)
Call keybd_event(Asc("G"), 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(KEYEVENTF_KEYCTRL, 0, KEYEVENTF_KEYUP, 0)

Me.Visible = True
Call MsgBox("Ctrl-G Sent")
End Sub

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -