你看看王国荣写的《visual basic6.0 windows api讲座》541-550页,关于拦截键盘。我用他的方法和动态库在程序中成功冻结了“引号”键,只是源代码手头没有,找到再说吧。 *我是在win98下试验的
那个 王国荣写的《visual basic6.0 windows api讲座》 书蛮好?? 那个出版社的 多少钱 在那儿有卖????? 我也想要哟
Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 你要的那个键的keyascii值 Then KeyAscii = 0 End Sub
.BAS*************Option Explicit 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 Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Const GWL_WNDPROC = (-4) Public Const WM_LBUTTONDOWN = &H201 Public Prevwndproc As Long Function wndproc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_LBUTTONDOWN Then wndproc = CallWindowProc(Prevwndproc, hWnd, Msg, wParam, lParam) Form1.Text1.Visible = True Else wndproc = CallWindowProc(Prevwndproc, hWnd, Msg, wParam, lParam) End If End Function .Form************ Private Sub Form_Load() Prevwndproc = GetWindowLong(Command1.hWnd, GWL_WNDPROC) SetWindowLong Command1.hWnd, GWL_WNDPROC, AddressOf wndproc
End SubPrivate Sub Form_Unload(Cancel As Integer) If Prevwndproc <> 0 Then SetWindowLong Command1.hWnd, GWL_WNDPROC, Prevwndproc Prevwndproc = 0 End If End Sub
If KeyAscii = 17 Then KeyAscii = 0
End SubPrivate Sub Form_Load()
Me.KeyPreview = True
End Sub
*我是在win98下试验的
If KeyAscii = 你要的那个键的keyascii值 Then KeyAscii = 0
End Sub
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
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = (-4)
Public Const WM_LBUTTONDOWN = &H201
Public Prevwndproc As Long
Function wndproc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_LBUTTONDOWN Then
wndproc = CallWindowProc(Prevwndproc, hWnd, Msg, wParam, lParam)
Form1.Text1.Visible = True
Else
wndproc = CallWindowProc(Prevwndproc, hWnd, Msg, wParam, lParam)
End If
End Function
.Form************
Private Sub Form_Load()
Prevwndproc = GetWindowLong(Command1.hWnd, GWL_WNDPROC)
SetWindowLong Command1.hWnd, GWL_WNDPROC, AddressOf wndproc
End SubPrivate Sub Form_Unload(Cancel As Integer)
If Prevwndproc <> 0 Then
SetWindowLong Command1.hWnd, GWL_WNDPROC, Prevwndproc
Prevwndproc = 0
End If
End Sub