此法很灵:
先建一模块:
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private 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
Private Const GWL_WNDPROC = (-4)
Private Const WM_RBUTTONDOWN = &H204Private m_lpPrevDisableRButtonDownWindowProc As LongFunction DisableRButtonDownWindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = WM_RBUTTONDOWN Then
Exit Function
End If
DisableRButtonDownWindowProc = CallWindowProc(m_lpPrevDisableRButtonDownWindowProc, hwnd, uMsg, wParam, lParam)
End FunctionPublic Function HookText(ByVal hwnd As Long) As Boolean
m_lpPrevDisableRButtonDownWindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf DisableRButtonDownWindowProc)
End FunctionPublic Function UnHookText(ByVal hwnd As Long) As Boolean
Call SetWindowLong(hwnd, GWL_WNDPROC, m_lpPrevDisableRButtonDownWindowProc)
End Function在:
Private Sub Form_Load()
HookText Text1.hwnd
End subPrivate Sub Form_UnLoad()
UnHookText Text1.hwnd
End sub
先建一模块:
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private 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
Private Const GWL_WNDPROC = (-4)
Private Const WM_RBUTTONDOWN = &H204Private m_lpPrevDisableRButtonDownWindowProc As LongFunction DisableRButtonDownWindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = WM_RBUTTONDOWN Then
Exit Function
End If
DisableRButtonDownWindowProc = CallWindowProc(m_lpPrevDisableRButtonDownWindowProc, hwnd, uMsg, wParam, lParam)
End FunctionPublic Function HookText(ByVal hwnd As Long) As Boolean
m_lpPrevDisableRButtonDownWindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf DisableRButtonDownWindowProc)
End FunctionPublic Function UnHookText(ByVal hwnd As Long) As Boolean
Call SetWindowLong(hwnd, GWL_WNDPROC, m_lpPrevDisableRButtonDownWindowProc)
End Function在:
Private Sub Form_Load()
HookText Text1.hwnd
End subPrivate Sub Form_UnLoad()
UnHookText Text1.hwnd
End sub
解决方案 »
- 项目时间紧,紧急求救:激活VB UserControl控件失败问题
- VBA跨文件调用函数
- VB6 printer 报错
- http协议碰到两个session的cookie
- ActiveReports for .NET 使用指南(四)原创
- 在线等待,如何把一个picture上的自己绘制的东西复制到另一个picture上去!
- 怎样才能在两个recorderset之间做到最快速复制,尤其在纪录很多时?
- MScomm关于‘8002’无效端口号
- formula one 可以用ado吗?
- 那位高手能告诉我怎么从数据库到数据库copy数据
- 请指教:在ADO的RECORDSET中引用动态字符变量问题
- VB里面怎么添加dll文件啊?
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 93 Then MaskMenu Text1
End SubPrivate Sub MaskMenu(ByVal oText As TextBox)
With oText
.Enabled = False
.Enabled = True
.SetFocus
SendKeys "%"
End With
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 22 Then KeyAscii = 0
End SubPrivate Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then MaskMenu Text1
End Sub我的机器上完全通过
各位看一下有没有问题?
吧