VB는 텍스트 상자 오른쪽 버튼 메뉴의 복사, 붙여넣기 기능을 차단하는 방법

본고는 VB 차단 텍스트 상자의 오른쪽 단추 메뉴, 복사, 붙여넣기 등 기능의 실현 방법을 실례로 다루고 있다.이 기능은 텍스트 상자의 오른쪽 단추를 금지하는 기능으로 마우스 오른쪽 단추를 누르면 무효가 됩니다.매우 흔히 볼 수 있는 실용적인 기능이다.
구체적인 기능 모듈 코드는 다음과 같다.

'==========================================================
'|       | TextBoxDisableAbility
'|      |  
'==========================================================Option Explicit
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) 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 Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_WNDPROC = (-4)
Private Const WM_CUT = &H300 '------------- 
Private Const WM_COPY As Long = &H301 '------------- 
Private Const WM_PASTE As Long = &H302 '------------- 
Private Const WM_CLEAR = &H303 '------------- [ ]
Private Const EM_UNDO = &HC7 '------------- 
Private Const WM_CONTEXTMENU = &H7B '------------- 
Private prevWndProc   As Long
Private Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  Select Case Msg
  Case WM_CUT, WM_COPY, WM_PASTE, WM_CLEAR, EM_UNDO, WM_CONTEXTMENU
    ' , 
  Case Else
    ' 
    WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
  End Select
End Function
Public Sub DisableAbility(TargetTextBox As TextBox)
  ' 
  prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC)
  SetWindowLong TargetTextBox.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub

이 코드의 기능은 텍스트 상자의 오른쪽 단추 메뉴, 복사, 붙여넣기 등을 차단하여 많은 프로그램에서 이러한 기능을 볼 수 있다.여러분에게 VB 애호가들에게 공유하여 도움이 되었으면 합니다!

좋은 웹페이지 즐겨찾기