vb钩子过程中使用sendmessage之后自动退出
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 TempA
Call CallNextHookEx(hNextHookProc, iCode, wParam, lparam)
Else
Call CallNextHookEx(hNextHookProc, iCode, wParam, lparam)
End If
End Function
[解决办法]
SendMessage必须等待消息处理完后才能返回,改成postmessage试下。
另外,回调函数中尽量少做事情,与界面直接有关的更不要做。