Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, lparam As KBDLLHOOKSTRUCT) As Long
Dim TempA As String
MyKBHFunc = 0
If iCode < 0 Then
MyKBHFunc = CallNextHookEx(hNextHookProc, iCode, wParam, lparam)
Exit Function
End If
Debug.Print lparam.vkCode
’当按下回车键时抓取句柄为hwndarry_text的内容,hwndarry_text为指定的text框句柄
If lparam.vkCode = 13 Then
'当我加入下面*框内的代码时就vb就直接退出了,根本就不执行,有高手指点吗
'****************************************
sSave = Space$(10)
 Call SendMessage(hwndarry_text, WM_GETTEXT, 10, ByVal sSave)
TempA = trim(sSave)
'**************************************
'MyKBHFunc = 1 '如果为1吃掉消息
Debug.Print TempACall CallNextHookEx(hNextHookProc, iCode, wParam, lparam)Else
Call CallNextHookEx(hNextHookProc, iCode, wParam, lparam)
End IfEnd Function

解决方案 »

  1.   

    SendMessage必须等待消息处理完后才能返回,改成postmessage试下。
    另外,回调函数中尽量少做事情,与界面直接有关的更不要做。
      

  2.   

    自动退出一般为代码不正确时产生的因为VB6对异常支持不好。
    你看你的代码哪里有类型不相同之类的情况没?一般都错在这里
    比如你的lparam类型是KBDLLHOOKSTRUCT,那你声明CallNextHookEx时最后一个参数的类型是不是any?不是的话改过来
      

  3.   

    绕道而行,
    不能用sendmessage
    我改用ReadProcessMemory读取内存地址