|

楼主 |
发表于 2005-11-7 15:42:35
|
显示全部楼层
只有代码不行呀,你不知道制作这个键盘的界面有多麻烦,改天我把控件和代码整理一下,贴上来。<br /><br />Option Explicit<br />Rem 转移输入焦点的声明<br /> rivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long<br /> rivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long<br /><br />Rem 窗口置顶的声明<br /> rivate Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long<br /><br />Rem 移动没有标题栏窗体的声明<br />Private Declare Function ReleaseCapture Lib "user32" () As Long<br />Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long<br /><br />Rem 模拟按键声明<br />Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)<br /><br />Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer<br /><br />Rem 禁止本窗体拥有输入焦点的常数<br />Private Const HWND_NOTOPMOST = -2<br />Private Const WS_DISABLED = &H8000000<br />Private Const GWL_EXSTYLE = (-20)<br />Private Const GWL_STYLE = (-16)<br /><br />Rem 窗口置顶的常数<br />Private Const HWND_TOPMOST = -1<br />Private Const SWP_NOACTIVATE = &H10<br />Private Const SWP_NOMOVE = &H2<br />Private Const SWP_NOSIZE = &H1<br />Private Const SWP_SHOWWINDOW = &H40<br /><br />Rem 移动没有标题栏窗体的常数<br />Private Const HTCAPTION = 2<br />Private Const WM_NCLBUTTONDOWN = &HA1<br /><br />Rem 模拟按钮常数<br />Private Const KEYEVENTF_KEYUP = &H2<br /><br />Rem 以下是程序执行主体部分<br />Rem 窗体调用时置顶,且禁止拥有输入焦点<br />Private Sub Form_Load()<br /> Me.Show<br /> 小写字母<br /> 下档符号<br /> 数字小键盘<br /> 数字锁.SetFocus<br /> SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE<br /> SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_DISABLED<br />End Sub<br /><br />Rem 鼠标移动到窗体上时,窗体置顶<br />Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)<br /> SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE<br />End Sub<br /><br />Rem 移动没有标题栏窗体<br />Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)<br /> ReleaseCapture<br /> SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&<br />End Sub<br /><br />Rem 窗体重现时,设置其位置在屏幕中下方且置顶<br />Private Sub Form_Paint()<br /> SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE<br /> Me.Left = Screen.Width / 2 - Me.Width / 2<br /> Me.Top = Screen.Height - Me.Height - 450<br />End Sub<br /><br />Rem 防止执行多次<br />Private Sub Form_Initialize()<br /> If App.PrevInstance Then End<br />End Sub<br /><br />Rem 说明<br />Private Sub Form_DblClick()<br /> MsgBox "1.气球提示:鼠标指针指向某个键,停留片该,将会显示该键的英文全称或中文全称。" _<br /> & Chr(13) & "2.指法提示:鼠标指针的形状在每个键上都根据相应指法发生变化。" _<br /> & Chr(10) & "3.高亮提示:按下某个键时,该键会变得高亮;如果按下的是开关键,相应的指示灯也会变得高亮。" _<br /> & Chr(13) & "4.换档提示:当按下 Caps Lock 、Shift 、Num Lock 键时,相应的,大写字母、上档符号、小键盘数字会突出显示;" _<br /> & "反之,当弹起 Caps Lock 、Shift 、Num Lock 键时,相应的,小写字母、下档符号、小键盘光标键会突出显示。" _<br /> & Chr(13) & "5.随手移动:在键盘背景处用鼠标拖动,可移动键盘。" _<br /> & Chr(13) & "6.显示说明:在键盘背景处用鼠标双击,可显示本说明。" _<br /> & Chr(13) _<br /> & Chr(13) & " 版 本:1.0.0.5" _<br /> & Chr(13) & " 制作人:盛 华" _<br /> & Chr(13) & " 地 址:陕西省安康市白河县" _<br /> & Chr(13) & " QQ号码:249498337 " _<br /> & Chr(13) & " E-Mail:ShengHua8@163.com" _<br /> & Chr(13) & " 昵 称:周星骋", , "仿 Microsoft 屏幕键盘使用说明"<br />End Sub<br /><br />Rem 用控件数组向外部窗口发送按键信息<br />Private Sub SKB_Click(Index As Integer)<br /> keybd_event Index, 0, 0, 0<br /> keybd_event Index, 0, KEYEVENTF_KEYUP, 0<br />End Sub<br /><br />Rem 获得焦点键高亮<br />Private Sub SKB_GotFocus(Index As Integer)<br /> SKB(Index).BackColor = &HFFE0&<br />End Sub<br />Private Sub SKB_LostFocus(Index As Integer)<br /> SKB(Index).BackColor = vbWhite<br />End Sub<br /><br />Rem 三个控制键盘灯的键<br />Private Sub 大写锁_Click()<br /> If 大写锁.BackColor = &HD9A16F Then<br /> 大写锁.BackColor = &HFFE0&<br /> 大写灯.ForeColor = &HFFE0&<br /> keybd_event 20, 0, 0, 0<br /> keybd_event 20, 0, KEYEVENTF_KEYUP, 0<br /> If 换档(160).BackColor = &HFFE0& Or 换档(161).BackColor = &HFFE0& Then<br /> 小写字母<br /> Else<br /> 大写字母<br /> End If<br /> Else<br /> 大写锁.BackColor = &HD9A16F<br /> 大写灯.ForeColor = &HD9A16F<br /> keybd_event 20, 0, 0, 0<br /> keybd_event 20, 0, KEYEVENTF_KEYUP, 0<br /> If 换档(160).BackColor = &HFFE0& Or 换档(161).BackColor = &HFFE0& Then<br /> 大写字母<br /> Else<br /> 小写字母<br /> End If<br /> End If<br />End Sub<br /><br />Private Sub 数字锁_Click()<br /> If 数字锁.BackColor = &HD9A16F Then<br /> 数字锁.BackColor = &HFFE0&<br /> 数字灯.ForeColor = &HFFE0&<br /> keybd_event 144, 0, 0, 0<br /> keybd_event 144, 0, KEYEVENTF_KEYUP, 0<br /> If 换档(160).BackColor = &HFFE0& Or 换档(161).BackColor = &HFFE0& Then<br /> 光标小键盘<br /> Else<br /> 数字小键盘<br /> End If<br /> Else<br /> 数字锁.BackColor = &HD9A16F<br /> 数字灯.ForeColor = &HD9A16F<br /> keybd_event 144, 0, 0, 0<br /> keybd_event 144, 0, KEYEVENTF_KEYUP, 0<br /> 光标小键盘<br /> End If<br /><br />End Sub<br />Private Sub 卷轴锁_Click()<br /> If 卷轴锁.BackColor = &HD9A16F Then<br /> 卷轴锁.BackColor = &HFFE0&<br /> 卷轴灯.ForeColor = &HFFE0&<br /> keybd_event 145, 0, 0, 0<br /> keybd_event 145, 0, KEYEVENTF_KEYUP, 0<br /> Else<br /> 卷轴锁.BackColor = &HD9A16F<br /> 卷轴灯.ForeColor = &HD9A16F<br /> keybd_event 145, 0, 0, 0<br /> keybd_event 145, 0, KEYEVENTF_KEYUP, 0<br /> End If<br />End Sub<br /><br />Rem 四组成对的特殊键<br />Private Sub 控制_Click(Index As Integer)<br /> If 控制(Index).BackColor = &HD9A16F Then<br /> 控制(Index).BackColor = &HFFE0&<br /> keybd_event Index, 0, 0, 0<br /> Else<br /> 控制(Index).BackColor = &HD9A16F<br /> keybd_event Index, 0, KEYEVENTF_KEYUP, 0<br /> End If<br />End Sub<br /><br />Private Sub 转换_Click(Index As Integer)<br /> If 转换(Index).BackColor = &HD9A16F Then<br /> 转换(Index).BackColor = &HFFE0&<br /> keybd_event Index, 0, 0, 0<br /> Else<br /> 转换(Index).BackColor = &HD9A16F<br /> keybd_event Index, 0, KEYEVENTF_KEYUP, 0<br /> End If<br />End Sub<br /><br />Private Sub 徽标_Click(Index As Integer)<br /> If 徽标(Index).BackColor = &HD9A16F Then<br /> 徽标(Index).BackColor = &HFFE0&<br /> keybd_event Index, 0, 0, 0<br /> Else<br /> 徽标(Index).BackColor = &HD9A16F<br /> keybd_event Index, 0, KEYEVENTF_KEYUP, 0<br /> End If<br />End Sub<br /><br />Private Sub 换档_Click(Index As Integer)<br /> If 换档(Index).BackColor = &HD9A16F Then<br /> 换档(Index).BackColor = &HFFE0&<br /> keybd_event Index, 0, 0, 0<br /> 上档符号<br /> If 大写灯.ForeColor = &HFFE0& Then<br /> 小写字母<br /> Else<br /> 大写字母<br /> End If<br /> 光标小键盘<br /> Else<br /> 换档(Index).BackColor = &HD9A16F<br /> keybd_event Index, 0, KEYEVENTF_KEYUP, 0<br /> 下档符号<br /> If 大写灯.ForeColor = &HFFE0& Then<br /> 大写字母<br /> Else<br /> 小写字母<br /> End If<br /> If 数字灯.ForeColor = &HFFE0& Then<br /> 数字小键盘<br /> Else<br /> 光标小键盘<br /> End If<br /> End If<br />End Sub<br /><br />Rem 弹出式快捷菜单键<br />Private Sub 快捷菜单_Click()<br /> keybd_event 93, 0, 0, 0<br /> keybd_event 93, 0, KEYEVENTF_KEYUP, 0<br />End Sub<br />Private Sub 快捷菜单_GotFocus()<br /> 快捷菜单.BackColor = &HFFE0&<br />End Sub<br />Private Sub 快捷菜单_LostFocus()<br /> 快捷菜单.BackColor = &HD9A16F<br />End Sub<br /><br />Rem 小键盘回车<br />Private Sub 小回车_Click()<br /> keybd_event 13, 0, 0, 0<br /> keybd_event 13, 0, KEYEVENTF_KEYUP, 0<br />End Sub<br />Private Sub 小回车_GotFocus()<br /> 小回车.BackColor = &HFFE0&<br />End Sub<br />Private Sub 小回车_LostFocus()<br /> 小回车.BackColor = vbWhite<br />End Sub<br /><br />Rem 处理小键盘上每个按键<br />Private Sub 小键盘_GotFocus(Index As Integer)<br /> 小键盘(Index).BackColor = &HFFE0&<br />End Sub<br />Private Sub 小键盘_LostFocus(Index As Integer)<br /> 小键盘(Index).BackColor = vbWhite<br />End Sub<br />Private Sub 小键盘_Click(Index As Integer)<br /> If 数字锁.BackColor = &HFFE0& Then<br /> keybd_event Index, 0, 0, 0<br /> keybd_event Index, 0, KEYEVENTF_KEYUP, 0<br /> Else<br /> Call 小键盘光标(Index)<br /> End If<br />End Sub<br /><br />Rem 自定义子函数,使得小键盘变成光标<br />Sub 小键盘光标(ByVal NumIndex As Integer)<br /> Select Case NumIndex<br /> Case 96<br /> keybd_event 45, 0, 0, 0<br /> keybd_event 45, 0, KEYEVENTF_KEYUP, 0<br /> Case 97<br /> keybd_event 35, 0, 0, 0<br /> keybd_event 35, 0, KEYEVENTF_KEYUP, 0<br /> Case 98<br /> keybd_event 40, 0, 0, 0<br /> keybd_event 40, 0, KEYEVENTF_KEYUP, 0<br /> Case 99<br /> keybd_event 34, 0, 0, 0<br /> keybd_event 34, 0, KEYEVENTF_KEYUP, 0<br /> Case 100<br /> keybd_event 37, 0, 0, 0<br /> keybd_event 37, 0, KEYEVENTF_KEYUP, 0<br /> Case 101<br /> Case 102<br /> keybd_event 39, 0, 0, 0<br /> keybd_event 39, 0, KEYEVENTF_KEYUP, 0<br /> Case 103<br /> keybd_event 36, 0, 0, 0<br /> keybd_event 36, 0, KEYEVENTF_KEYUP, 0<br /> Case 104<br /> keybd_event 38, 0, 0, 0<br /> keybd_event 38, 0, KEYEVENTF_KEYUP, 0<br /> Case 105<br /> keybd_event 33, 0, 0, 0<br /> keybd_event 33, 0, KEYEVENTF_KEYUP, 0<br /> Case 110<br /> keybd_event 46, 0, 0, 0<br /> keybd_event 46, 0, KEYEVENTF_KEYUP, 0<br /> End Select<br />End Sub<br /><br />Rem 自定义子函数,使子母键突出显示大写<br />Sub 大写字母()<br /> SKB(65).Caption = "A" & Chr(10) & "a"<br /> SKB(66).Caption = "B" & Chr(10) & "b"<br /> SKB(67).Caption = "C" & Chr(10) & "c"<br /> SKB(68).Caption = "D" & Chr(10) & "d"<br /> SKB(69).Caption = "E" & Chr(10) & "e"<br /> SKB(70).Caption = "F" & Chr(10) & "f"<br /> SKB(71).Caption = "G" & Chr(10) & "g"<br /> SKB(72).Caption = "H" & Chr(10) & "h"<br /> SKB(73).Caption = "I" & Chr(10) & "i"<br /> SKB(74).Caption = "J" & Chr(10) & "j"<br /> SKB(75).Caption = "K" & Chr(10) & "k"<br /> SKB(76).Caption = "L" & Chr(10) & "l"<br /> SKB(77).Caption = "M" & Chr(10) & "m"<br /> SKB(78).Caption = "N" & Chr(10) & "n"<br /> SKB(79).Caption = "O" & Chr(10) & "o"<br /> SKB(80).Caption = "P" & Chr(10) & "p"<br /> SKB(81).Caption = "Q" & Chr(10) & "q"<br /> SKB(82).Caption = "R" & Chr(10) & "r"<br /> SKB(83).Caption = "S" & Chr(10) & "s"<br /> SKB(84).Caption = "T" & Chr(10) & "t"<br /> SKB(85).Caption = "U" & Chr(10) & "u"<br /> SKB(86).Caption = "V" & Chr(10) & "v"<br /> SKB(87).Caption = "W" & Chr(10) & "w"<br /> SKB(88).Caption = "X" & Chr(10) & "x"<br /> SKB(89).Caption = "Y" & Chr(10) & "y"<br /> SKB(90).Caption = "Z" & Chr(10) & "z"<br />End Sub<br />Rem 自定义子函数,使子母键突出显示小写<br />Sub 小写字母()<br /> SKB(65).Caption = "A" & Chr(10) & "a"<br /> SKB(66).Caption = "B" & Chr(10) & "b"<br /> SKB(67).Caption = "C" & Chr(10) & "c"<br /> SKB(68).Caption = "D" & Chr(10) & "d"<br /> SKB(69).Caption = "E" & Chr(10) & "e"<br /> SKB(70).Caption = "F" & Chr(10) & "f"<br /> SKB(71).Caption = "G" & Chr(10) & "g"<br /> SKB(72).Caption = "H" & Chr(10) & "h"<br /> SKB(73).Caption = "I" & Chr(10) & "i"<br /> SKB(74).Caption = "J" & Chr(10) & "j"<br /> SKB(75).Caption = "K" & Chr(10) & "k"<br /> SKB(76).Caption = "L" & Chr(10) & "l"<br /> SKB(77).Caption = "M" & Chr(10) & "m"<br /> SKB(78).Caption = "N" & Chr(10) & "n"<br /> SKB(79).Caption = "O" & Chr(10) & "o"<br /> SKB(80).Caption = "P" & Chr(10) & "p"<br /> SKB(81).Caption = "Q" & Chr(10) & "q"<br /> SKB(82).Caption = "R" & Chr(10) & "r"<br /> SKB(83).Caption = "S" & Chr(10) & "s"<br /> SKB(84).Caption = "T" & Chr(10) & "t"<br /> SKB(85).Caption = "U" & Chr(10) & "u"<br /> SKB(86).Caption = "V" & Chr(10) & "v"<br /> SKB(87).Caption = "W" & Chr(10) & "w"<br /> SKB(88).Caption = "X" & Chr(10) & "x"<br /> SKB(89).Caption = "Y" & Chr(10) & "y"<br /> SKB(90).Caption = "Z" & Chr(10) & "z"<br />End Sub<br />Rem 自定义子函数,使运算符号突出显示上档<br />Sub 上档符号()<br /> SKB(48).Caption = ")" & Chr(10) & "0"<br /> SKB(49).Caption = "!" & Chr(10) & "1"<br /> SKB(50).Caption = "@" & Chr(10) & "2"<br /> SKB(51).Caption = "#" & Chr(10) & "3"<br /> SKB(52).Caption = "$" & Chr(10) & "4"<br /> SKB(53).Caption = "%" & Chr(10) & "5"<br /> SKB(54).Caption = "^" & Chr(10) & "6"<br /> SKB(55).Caption = "&" & Chr(10) & "7"<br /> SKB(56).Caption = "*" & Chr(10) & "8"<br /> SKB(57).Caption = "(" & Chr(10) & "9"<br /> SKB(186).Caption = ":" & Chr(10) & ";"<br /> SKB(187).Caption = "+" & Chr(10) & "="<br /> SKB(188).Caption = "<" & Chr(10) & ","<br /> SKB(189).Caption = "___" & Chr(10) & "-"<br /> SKB(190).Caption = ">" & Chr(10) & "."<br /> SKB(191).Caption = "?" & Chr(10) & "/"<br /> SKB(192).Caption = "~" & Chr(10) & "`"<br /> SKB(219).Caption = "{" & Chr(10) & "["<br /> SKB(220).Caption = "|" & Chr(10) & "\"<br /> SKB(221).Caption = "}" & Chr(10) & "]"<br /> SKB(222).Caption = "”" & Chr(10) & "'"<br />End Sub<br />Rem 自定义子函数,使运算符号突出显示下档<br />Sub 下档符号()<br /> SKB(48).Caption = ")" & Chr(10) & "0"<br /> SKB(49).Caption = "!" & Chr(10) & "1"<br /> SKB(50).Caption = "@" & Chr(10) & "2"<br /> SKB(51).Caption = "#" & Chr(10) & "3"<br /> SKB(52).Caption = "$" & Chr(10) & "4"<br /> SKB(53).Caption = "%" & Chr(10) & "5"<br /> SKB(54).Caption = "^" & Chr(10) & "6"<br /> SKB(55).Caption = "&&" & Chr(10) & "7"<br /> SKB(56).Caption = "*" & Chr(10) & "8"<br /> SKB(57).Caption = "(" & Chr(10) & "9"<br /> SKB(186).Caption = ":" & Chr(10) & ";"<br /> SKB(187).Caption = "+" & Chr(10) & "="<br /> SKB(188).Caption = "<" & Chr(10) & ","<br /> SKB(189).Caption = "__" & Chr(10) & "-"<br /> SKB(190).Caption = ">" & Chr(10) & "."<br /> SKB(191).Caption = "?" & Chr(10) & "/"<br /> SKB(192).Caption = "~" & Chr(10) & "`"<br /> SKB(219).Caption = "{" & Chr(10) & "["<br /> SKB(220).Caption = "|" & Chr(10) & "\"<br /> SKB(221).Caption = "}" & Chr(10) & "]"<br /> SKB(222).Caption = "″" & Chr(10) & "'"<br />End Sub<br />Rem 自定义子函数,使小键盘突出显示数字<br />Sub 数字小键盘()<br /> 小键盘(96).Caption = "0" & Chr(10) & "插"<br /> 小键盘(97).Caption = "1" & Chr(10) & "尾"<br /> 小键盘(98).Caption = "2" & Chr(10) & "↓"<br /> 小键盘(99).Caption = "3" & Chr(10) & "后"<br /> 小键盘(100).Caption = "4" & Chr(10) & "←"<br /> 小键盘(101).Caption = "5" & Chr(10) & " "<br /> 小键盘(102).Caption = "6" & Chr(10) & "→"<br /> 小键盘(103).Caption = "7" & Chr(10) & "头"<br /> 小键盘(104).Caption = "8" & Chr(10) & "↑"<br /> 小键盘(105).Caption = "9" & Chr(10) & "前"<br /> 小键盘(110).Caption = "." & Chr(10) & "删"<br />End Sub<br />Rem 自定义子函数,使小键盘突出显示光标<br />Sub 光标小键盘()<br /> 小键盘(96).Caption = "0" & Chr(10) & "插"<br /> 小键盘(97).Caption = "1" & Chr(10) & "尾"<br /> 小键盘(98).Caption = "2" & Chr(10) & "↓"<br /> 小键盘(99).Caption = "3" & Chr(10) & "后"<br /> 小键盘(100).Caption = "4" & Chr(10) & "←"<br /> 小键盘(101).Caption = "5" & Chr(10) & " "<br /> 小键盘(102).Caption = "6" & Chr(10) & "→"<br /> 小键盘(103).Caption = "7" & Chr(10) & "头"<br /> 小键盘(104).Caption = "8" & Chr(10) & "↑"<br /> 小键盘(105).Caption = "9" & Chr(10) & "前"<br /> 小键盘(110).Caption = "." & Chr(10) & "删"<br />End Sub<br /> |
|