Private Sub Command1_Click()
Shell "notepad.exe", vbNormalFocus
AddHook
End SubPrivate Sub Form_Load()
Dim n As Integer
num = 0
For n = 0 To 10
  yours(n) = n
Next
End SubPrivate Sub Form_Unload(Cancel As Integer)
DelHook
End Sub模块:
Public Type KEYMSGS
       vKey As Long          '虚拟码  (and &HFF)
       sKey As Long          '扫描码
       flag As Long          '键按下:128 抬起:0
End Type
Public keyMsg As KEYMSGS
Public Const WH_KEYBOARD_LL = 13
Public lHook As Long
Public num As Long
Public yours(10) As Long'消息
Public Const HC_ACTION = 0
Public Const HC_SYSMODALOFF = 5
Public Const HC_SYSMODALON = 4
'键盘消息
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
                                                            (ByVal idHook As Long, _
                                                            ByVal lpfn As Long, _
                                                            ByVal hmod As Long, _
                                                            ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
                                                            ByVal ncode As Long, _
                                                            ByVal wParam As Long, _
                                                            lParam As Any) As Long
                                                            
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
                                                            (lpvDest As Any, _
                                                            ByVal lpvSource As Long, _
                                                            ByVal cbCopy As Long)Public Sub AddHook()
lHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf CallKeyHookProc, App.hInstance, 0)
End SubPublic Sub DelHook()
  UnhookWindowsHookEx lHook
End Sub
Public Function CallKeyHookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long    If code = HC_ACTION Then
        CopyMemory keyMsg, lParam, LenB(keyMsg)
        Select Case wParam
            Case WM_SYSKEYDOWN, WM_KEYDOWN:
                If (keyMsg.vKey And &HFF) = vbKeyA Then '设置自定义按键
                    SendKeys yours(num)
If (num < 10) Then num = num + 1
                    CallKeyHookProc = 1 '屏蔽按键
                End If
            Case WM_SYSKEYUP, WM_KEYUP:
        End Select
        
    End If
            
    If code <> 0 Then
        CallKeyHookProc = CallNextHookEx(0, code, wParam, lParam)
    End IfEnd Function现在这个程序是输出数组中的数字,现在我想把LONG型数组改成字符型数组,然后定义好每个元素的字符(比如:第一个元素是"aaa",第二个元素是"bbb"等),然后再一个一个的把每个数组元素输出,如何改?

解决方案 »

  1.   

     Form_Load里就用这一句
    yours = Array("a", "b", "c", "d", "e", "f", "g", "h", "r", "g", "h")
    然后把模块里的Public yours(10) As Long 定义成Public yours变体型
      

  2.   

    终于有位回答能正题的帅哥了!
    字符数组中我不想用你这种方式,我想用分别定义的形式:yours(0)="aaa",yours(1)="bbb"等等!
    还有你说的这个Public yours变体型,变体型是什么?

      

  3.   

    变体型就是 Public yours As Variant, 即 yours 可以是任何类型。
    变体型才能用 yours = Array("a", "b", "c", "d", "e", "f", "g", "h", "r", "g", "h")
      

  4.   


    Private Sub Form_Load()
    Dim n As Integer
    num = 0
    For n = 0 To 10
      yours(n) = n
    Next
    End SubPublic yours(10) As Long
    [color=#FF0000]现在这个程序是输出数组中的数字,现在我想把LONG型数组改成字符型数组,然后定义好每个元素的字符(比如:第一个元素是"aaa",第二个元素是"bbb"等),然后再一个一个的把每个数组元素输出,如何改?
    Private sub Form_Load()yours(0) = "aaa"
    yours(1) = "bbb"
    yours(2) = "ccc"
    '...end subPublic yours(10) as String
      

  5.   

    这个我会了!
    [color=#FF0000]再问个新问题!
    我还想对这个程序设置一个热键,用来开始\暂停程序的运行,怎样设置这个热键?
      

  6.   

    循环的问题已经解决啦,现在有新问题啦:我[color=#FF0000]还想对这个程序设置一个热键,用来开始\暂停程序的运行,怎样设置这个热键?
      

  7.   

    源代码调试的话,你可以按下Ctrl+Break.编译后的话,你可以判断一个变量是否符合指定的要求,符合就退出循环,并记录下循环到了哪里,下次再调用.
      

  8.   

    我是这样改的:If (keyMsg.vKey And &HFF) = vbKeyA Then  '设置自定义按键A
                        kg = kg Xor 1
                    End If
                    If (keyMsg.vKey And &HFF) = vbKeyB And kg = 1 Then'设置自定义按键B
                        SendKeys yours(num)
                        If (num < 10) Then
                            num = num + 1
                        Else
                            num = 0
                        End If
                    CallKeyHookProc = 1 '屏蔽按键
                    End If按A键 就是开关,按B键 就输出yours数组的东西,但运行的时候,一按A或B键就说编译错误,然后VB6.0直接关闭了!搞不懂哪里错啦?
      

  9.   

    新问题新开帖,这是csdn的潜规则