Module1.bas
上传用户:ollolxp
上传日期:2021-02-23
资源大小:52k
文件大小:2k
源码类别:

输入法编程

开发平台:

Visual Basic

  1. Attribute VB_Name = "Module1"
  2. Public Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
  3. Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  4. Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  5. ' ------------------------DLL导出函数-----------------------------
  6. Public Declare Function DLLstartHOOK Lib "hxwdllwx.dll" (ByVal hwnd As Long) As Long   '初始化钩子
  7. Public Declare Function DLLstopHOOK Lib "hxwdllwx.dll" () As Long   '卸载钩子
  8. Public Declare Function DLLsetHOOKState Lib "hxwdllwx.dll" (ByVal myState As Boolean) As Long  '打开或关闭钩子
  9. Public Declare Function DLLGetPubString Lib "hxwdllwx.dll" () As String   '获得输入法输入
  10. Public Declare Function DLLSetPubString Lib "hxwdllwx.dll" (ByVal tmpstr As String) As Long   '修改输入法输入
  11. ' ----------------------------------------------------------------
  12. Public Const GWL_WNDPROC = -4
  13. Public WM_HXWDLLWX_QQBTX As Long  '自定义消息
  14. Public WM_HXWDLLWX_HOOKKEY As Long
  15. Public PrevWndProc As Long '保存旧的窗口处理函数地址
  16. Public Function SubWndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  17. Dim tmpS As String
  18. If Msg = WM_HXWDLLWX_QQBTX Then
  19. '如果收到了输入法拦截消息
  20.     tmpS = DLLGetPubString() '获得输入法输入
  21.     Form1.Text1.Text = Form1.Text1.Text & "拦截到输入法输入:" & tmpS & vbCrLf
  22.     tmpS = tmpS & "(被修改)"
  23.     DLLSetPubString tmpS   '修改输入法输入
  24. End If
  25. If Msg = WM_HXWDLLWX_HOOKKEY Then
  26. '如果收到的是键盘拦截消息
  27.     Form1.Text1.Text = Form1.Text1.Text & "拦截到键盘消息。扫描码:" & lParam & " 字符:" & Chr(wParam) & vbCrLf
  28. End If
  29. SubWndProc = CallWindowProc(PrevWndProc, hwnd, Msg, wParam, lParam)   '将消息传给旧的窗口函数继续处理
  30. End Function