重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
public txt as string
成都创新互联公司成立与2013年,是专业互联网技术服务公司,拥有项目成都做网站、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元盘山做网站,已为上家服务,为盘山各地企业和个人服务,联系电话:13518219792
sub 文本柜1_click()
F.show
文本框1.text = txt
end sub
建一个窗体F ,做11个按钮(其中一个为确认),一文本框
按钮1 : text1.text = text1.text "1"
按钮2 : text1.text = text1.text "2"
按钮3 : : text1.text = text1.text "3"
按钮"确认" : txt = text1.text
用API keybd_event来模拟按键过程,但是Ctrl+Alt+Del不能模拟,前面已经定义了各个按键的值,需要按什么键替换成对应的值就行了,由于是模拟键盘按键,所以按键发送的对象是当前激活的窗口。
Option Explicit
'
'Virtual Keys, Standard Set
'
Private Const VK_LBUTTON = H1
Private Const VK_RBUTTON = H2
Private Const VK_CANCEL = H3
Private Const VK_MBUTTON = H4 'NOT contiguous with L RBUTTON
Private Const VK_BACK = H8
Private Const VK_TAB = H9
Private Const VK_CLEAR = HC
Private Const VK_RETURN = HD
Private Const VK_SHIFT = H10
Private Const VK_CONTROL = H11
Private Const VK_MENU = H12
Private Const VK_PAUSE = H13
Private Const VK_CAPITAL = H14
Private Const VK_KANA = H15
Private Const VK_HANGEUL = H15 'old name - should be here for compatibility
Private Const VK_HANGUL = H15
Private Const VK_JUNJA = H17
Private Const VK_FINAL = H18
Private Const VK_HANJA = H19
Private Const VK_KANJI = H19
Private Const VK_ESCAPE = H1B
Private Const VK_CONVERT = H1C
Private Const VK_NONCONVERT = H1D
Private Const VK_ACCEPT = H1E
Private Const VK_MODECHANGE = H1F
Private Const VK_SPACE = H20
Private Const VK_PRIOR = H21
Private Const VK_NEXT = H22
Private Const VK_END = H23
Private Const VK_HOME = H24
Private Const VK_LEFT = H25
Private Const VK_UP = H26
Private Const VK_RIGHT = H27
Private Const VK_DOWN = H28
Private Const VK_SELECT = H29
Private Const VK_PRINT = H2A
Private Const VK_EXECUTE = H2B
Private Const VK_SNAPSHOT = H2C
Private Const VK_INSERT = H2D
Private Const VK_DELETE = H2E
Private Const VK_HELP = H2F
'VK_0 thru VK_9 are the same as ASCII '0' thru '9' (=H30 - =H39)
'VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (=H41 - =H5A)
Private Const VK_LWIN = H5B
Private Const VK_RWIN = H5C
Private Const VK_APPS = H5D
Private Const VK_NUMPAD0 = H60
Private Const VK_NUMPAD1 = H61
Private Const VK_NUMPAD2 = H62
Private Const VK_NUMPAD3 = H63
Private Const VK_NUMPAD4 = H64
Private Const VK_NUMPAD5 = H65
Private Const VK_NUMPAD6 = H66
Private Const VK_NUMPAD7 = H67
Private Const VK_NUMPAD8 = H68
Private Const VK_NUMPAD9 = H69
Private Const VK_MULTIPLY = H6A
Private Const VK_ADD = H6B
Private Const VK_SEPARATOR = H6C
Private Const VK_SUBTRACT = H6D
Private Const VK_DECIMAL = H6E
Private Const VK_DIVIDE = H6F
Private Const VK_F1 = H70
Private Const VK_F2 = H71
Private Const VK_F3 = H72
Private Const VK_F4 = H73
Private Const VK_F5 = H74
Private Const VK_F6 = H75
Private Const VK_F7 = H76
Private Const VK_F8 = H77
Private Const VK_F9 = H78
Private Const VK_F10 = H79
Private Const VK_F11 = H7A
Private Const VK_F12 = H7B
Private Const VK_F13 = H7C
Private Const VK_F14 = H7D
Private Const VK_F15 = H7E
Private Const VK_F16 = H7F
Private Const VK_F17 = H80
Private Const VK_F18 = H81
Private Const VK_F19 = H82
Private Const VK_F20 = H83
Private Const VK_F21 = H84
Private Const VK_F22 = H85
Private Const VK_F23 = H86
Private Const VK_F24 = H87
Private Const VK_NUMLOCK = H90
Private Const VK_SCROLL = H91
'
'VK_L* VK_R* - left and right Alt, Ctrl and Shift virtual keys.
'Used only as parameters to GetAsyncKeyState() and GetKeyState().
'No other API or message will distinguish left and right keys in this way.
'
Private Const VK_LSHIFT = HA0
Private Const VK_RSHIFT = HA1
Private Const VK_LCONTROL = HA2
Private Const VK_RCONTROL = HA3
Private Const VK_LMENU = HA4
Private Const VK_RMENU = HA5
'dwFlags
Private Const KEYEVENTF_EXTENDEDKEY = H1
Private Const KEYEVENTF_KEYUP = H2
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub Command1_Click()
Call keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY, 0) '按下Alt键
Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0) '按下Print Screen键
Call keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) '抬起Print Screen键
Call keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) '抬起Alt键
Call keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY, 0) '按下Win键
Call keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) '抬起Win键
Call keybd_event(VK_NUMLOCK, 0, KEYEVENTF_EXTENDEDKEY, 0) '按下Num Lock键
Call keybd_event(VK_NUMLOCK, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) '抬起Num Lock键
End Sub
我现在没有现成的代码给你,不过可以给你一些建议。如果你想在同一进程内实现屏幕键盘,则你只需要再F2打开的时候,将F1的当前焦点控件对象作为参数,传递给F2窗体,在F2点击屏幕控件时,设置该“控件.Text = 键值” 即可,这种我称之为假屏幕键盘。如果你想跨进程实现屏幕键盘,就比较难些了(比如:你想用你的F2窗体上的按键,实现QQ聊天内容的输入、记事本内容的输入)。这个需要用到 “键盘钩子”技术,有关这方面的资料,你不妨自己找找。 另外,你提的F2焦点老处理不好,我认为F2根本不需要焦点控件(不要用按钮做控件,而实用Label或图片就可以了。)
最简单的加速运动示例,直接拷贝代码,即可用方向键控制控件移动
Public Class 最简单的加速运动
Dim 左右, 上下 As Integer
Dim X, Y, VX, VY, VA As Double
Dim WithEvents 时钟 As New Timer
Dim WithEvents 移动控件 As New Label
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.KeyPreview = True
VA = 0.5
X = 300.0
Y = 300.0
移动控件.BackColor = Color.MediumPurple
移动控件.Size = New Size(60, 60)
Controls.Add(移动控件)
时钟.Interval = 25
时钟.Enabled = True
End Sub
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.Up Then 上下 = -1
If e.KeyCode = Keys.Down Then 上下 = 1
If e.KeyCode = Keys.Left Then 左右 = -1
If e.KeyCode = Keys.Right Then 左右 = 1
End Sub
Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode = Keys.Up Then 上下 = 0
If e.KeyCode = Keys.Down Then 上下 = 0
If e.KeyCode = Keys.Left Then 左右 = 0
If e.KeyCode = Keys.Right Then 左右 = 0
End Sub
Private Sub 时钟_Tick(sender As Object, e As EventArgs) Handles 时钟.Tick
VX = Math.Min(VX + 左右 * VA, 10)
VY = Math.Min(VY + 上下 * VA, 10)
X += VX
Y += VY
If X 0 Then X = 2 : VX = -VX
If Y 0 Then Y = 2 : VY = -VY
If X Width - 移动控件.Width Then X = Width - 移动控件.Width - 2 : VX = -VX
If Y Height - 移动控件.Height Then Y = Height - 移动控件.Height - 2 : VY = -VY
移动控件.Location = New Point(X, Y)
End Sub
End Class