[摘要]*.exe" '在添加对话框中只显示EXE文件cmnAdd.ShowOpen '打开添加对话框strFileName = cmnAdd.FileName'把定义的快...
*.exe" '在添加对话框中只显示EXE文件
cmnAdd.ShowOpen '打开添加对话框
strFileName = cmnAdd.FileName
'把定义的快捷键和应用程序添加到列表框中
If strFileName <> "" Then
List1.AddItem cmbChooseKey(5).Text + " " + cmnAdd.FileName
End If
cmbChooseKey(5).Text = "无"
End If
End Sub
Private Sub cmdApply_Click()
Dim strKeyJoin As String, strKeyFile As String
strKeyJoin = ""
strKeyFile = ""
'把特定功能区定义的快捷键以逗号为分隔符写入FunctionKey.txt文件
For i = 0 To 4
If i < 4 Then
strKeyJoin = strKeyJoin & Trim(cmbChooseKey(i).Text) & ","
Else
strKeyJoin = strKeyJoin & Trim(cmbChooseKey(i).Text)
End If
Next
Open App.Path + "\FunctionKey.txt" For Output As #1
Print #1, strKeyJoin
Close #1
'如果在列表框中有应用程序名和快捷键且检测CustomKey.txt,则删除该文件;
If List1.ListCount = 0 And Dir(App.Path + "\CustomKey.txt") <> "" Then
Kill App.Path + "\CustomKey.txt"
'把定义的快捷键及应用程序以逗号为分隔符写入CustomKey.txt文件
ElseIf List1.ListCount <> 0 Then
For i = 0 To List1.ListCount - 1
If i < List1.ListCount - 1 Then
rKeyFile = strKeyFile + List1.List(i) + ","
Else
strKeyFile = strKeyFile + List1.List(i)
End If
Next
Open App.Path + "\CustomKey.txt" For Output As #1
Print #1, strKeyFile
Close #1
End If
List1.Clear
'重新从FunctionKey.txt和CustomKey.txt文件中取得定义的快捷键及相应的应用程序名供程序使用
Form_Load
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub
'删除列表框中选中的快捷键和应用程序名
Private Sub cmdDel_Click()
List1.RemoveItem List1.ListIndex
End Sub
Private Sub cmdOk_Click()
cmdApply_Click '调用"应用"按钮下的代码
Me.Visible = False
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'按快捷键A调用"应用"按钮下的代码
If KeyCode = vbKeyA Then
cmdApply_Click
End If
End Sub
Private Sub Form_Load()
Dim strLine As String
'把F2~F11和"无"分别添加到组合框控件数组的下拉列表框和文本框中
For i = 0 To 5
cmbChooseKey(i).Text = "无"
cmbChooseKey(i).AddItem "无"
cmbChooseKey(i).AddItem "F2"
cmbChooseKey(i).AddItem "F3"
cmbChooseKey(i).AddItem "F4"
cmbChooseKey(i).AddItem "F5"
cmbChooseKey(i).AddItem "F6"
cmbChooseKey(i).AddItem "F7"
cmbChooseKey(i).AddItem "F8"
cmbChooseKey(i).AddItem "F9"
cmbChooseKey(i).AddItem "F10"
cmbChooseKey(i).AddItem "F11"
Next
'如果在应用程序的路径上没有FunctionKey.txt 和CustomKey.txt文件(即没有定义快捷键),
'则显示图1界面
If Dir(App.Path + "\FunctionKey.txt") = "" And Dir(App.Path + "\CustomKey.txt") = "" Then
Me.Show
End If
If Dir(App.Path + "\FunctionKey.txt") <> "" Then
Open App.Path + "\FunctionKey.txt" For Input As #1
Line Input #1, strLine
Close #1
'把定义的快捷键读到a数组中
a = Split(strLine, ",")
For i = 0 To UBound(a)
'把从FunctionKey.txt文件取出定义的快捷键并转变成键盘扫描码
iFunctionKey(i) = strKeyToLong(a(i))
'如果已经为特定功能定义了快捷键,则在相应的位置显示该快捷键,
'否则显示"无"
If IsNumeric(Right(a(i), 1)) Then
cmbChooseKey(i).Text = a(i)
Else
cmbChooseKey(i).Text = "无"
End If
Next
End If
Dim strKeyFileJoin As String
strLine = ""
'如果CustomKey.txt文件存在,则把所有的快捷键和应用程序名读到变量strLine中
If Dir(App.Path + "\CustomKey.txt") <> "" Then
Open App.Path + "\CustomKey.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, strLine
strKeyFileJoin = strKeyFileJoin + strLine
Loop
Close #1
strKey = Split(strKeyFileJoin, ",") '把快捷键和与之对应的应用程序名放入strKey数组中
'根据strKey数组的大小,重新定义以下数组的大小并保存重新定义前的值
ReDim Preserve iCustomFunction(UBound(strKey))
ReDim Preserve strKeyFile(UBound(strKey))
'把定义的快捷键和应用程序名添加到列表框中,并把快捷键的扫描码放入相应的数组中
For i = 0 To UBound(strKey)
List1.AddItem strKey(i)
strKeyFile(i) = Trim(Mid(strKey(i), 1, 4))
iCustomFunction(i) = strKeyToLong(strKeyFile(i))
Next
End If
End Sub
'以下两个过程的作用是完整地显示被遮蔽的应用程序名
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
List1.ToolTipText = Trim(Mid(List1.Text, 5))
End Sub
Private Sub List1_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
List1.ToolTipText = Trim(Mid(List1.Text, 5))
End Sub
Private Sub Timer1_Timer()
'如果用户按了数组iFunctionKey中相应的快捷键,则执行与之对应的(过程)功能
If MyHotKey(iFunctionKey(0)) Then
CloseComputer
ElseIf MyHotKey(iFunctionKey(1)) Then
RebootComputer
ElseIf MyHotKey(iFunctionKey(2)) Then
LockComputer
ElseIf MyHotKey(iFunctionKey(3)) Then
OpenCDROM
ElseIf MyHotKey(iFunctionKey(4)) Then
CloseCDROM
'按F12显示图1的界面
ElseIf MyHotKey(vbKeyF12) Then
Me.Visible = True
ElseIf List1.ListCount > 0 Then
ReDim Preserve iCustomFunction(List1.ListCount - 1)
'如果用户按了数组iCustomFunction中相应的快捷键,则打开与之对应的应用程序
For i = 0 To List1.ListCount - 1
If MyHotKey(iCustomFunction(i)) Then
Ret = Shell(Trim(Mid(strKey(i), 5)), 1)
End If
Next
End If
End Sub
四、程序说明
程序第一次运行时将出现图1所示界面,这时你可以只为自已喜欢的特定功能设置一个快捷键,也可以先选择一个快捷键,再点击“添加…”为常用软件定义一个快捷键,如图1中按F8将实现一键上网。设置好快捷键并点击“应用”或按快捷键A后,就可以体验一下你设置的“一键功能”了!点击“确定”将隐藏界面。如果已经定义好快捷键并退出后,再次运行该程序将不再显示图1的界面,你仍然可以直接使用“一键功能”,如果想重新设置,按F12即可显示程序界面。特别需要注意的是,要实现锁定屏幕,必须事先设置好屏幕保护程序并设置密码。
如果你感觉该程序比较实用,可以把它加入“启动”组,一开机就可以随时使用设定好的“一键功能”。另外,你可以充分发挥你的聪明才智,用VB编写的特定功能的过程来进一步扩充该程序。
程序在Win98+VB6.0下调试通过。源程序下载地址: http://www.cfan.net.cn/qikan/cxg/0203yjg.zip
关键词:“一键技巧”的设计、完成与应用