hr0694
جمعه 01 مهر 1390, 18:45 عصر
سلام
- این کد مربوط به جلوگیری از پیست شدن حروف انگلیسی و بعضی علائم در تکست1 است حالا من چکار کنم تکستهای 2 و 3 و 4 و 5 را هم شامل شود در صورتی که ماژول دیگری اضافه نکنم و این کد دستکاری شود
این کد در ماژول جداگانه باید نوشته شود
Declare Function CloseClipboard Lib "user32" () As Long
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
Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Const ExtraChrs$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-=;'\,./×!@#$%^&*)(_+?ـ"":<>؟{}[],؛،~ـ|"""
Public Const GWL_WNDPROC = -4
Private Const WM_DESTROY As Long = &H2
Public Const WM_PASTE As Long = &H302
Public lpPrevWndProc As Long
Private lnghWnd As Long
Public Sub Hook1(hWnd As Long)
lnghWnd = hWnd
lpPrevWndProc = SetWindowLong(lnghWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHook()
Dim lngReturnValue As Long
lngReturnValue = SetWindowLong(lnghWnd, GWL_WNDPROC, lpPrevWndProc)
End Sub
Function WindowProc(ByVal hw As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim clp_cnt$
Select Case uMsg
Case WM_PASTE
Call CloseClipboard
clp_cnt$ = Clipboard.GetText
Clipboard.Clear
Clipboard.SetText DelExtraChrs$(clp_cnt$, ExtraChrs$)
Case WM_DESTROY
UnHook
End Select
WindowProc = CallWindowProc(lpPrevWndProc, lnghWnd, uMsg, wParam, lParam)
End Function
Public Function DelExtraChrs$(tText$, InvalidChrsGroup$)
Dim i&
For i = 1 To Len(InvalidChrsGroup$)
tText$ = Replace(tText$, Mid(InvalidChrsGroup$, i, 1), Empty, , , vbTextCompare)
Next i
DelExtraChrs$ = tText$
End Function
و این کد در خود ماژول فرم نوشته شود
Private Sub Form_Load()
Hook1 Text1.hWnd
End Sub
- این کد مربوط به جلوگیری از پیست شدن حروف انگلیسی و بعضی علائم در تکست1 است حالا من چکار کنم تکستهای 2 و 3 و 4 و 5 را هم شامل شود در صورتی که ماژول دیگری اضافه نکنم و این کد دستکاری شود
این کد در ماژول جداگانه باید نوشته شود
Declare Function CloseClipboard Lib "user32" () As Long
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
Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Const ExtraChrs$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-=;'\,./×!@#$%^&*)(_+?ـ"":<>؟{}[],؛،~ـ|"""
Public Const GWL_WNDPROC = -4
Private Const WM_DESTROY As Long = &H2
Public Const WM_PASTE As Long = &H302
Public lpPrevWndProc As Long
Private lnghWnd As Long
Public Sub Hook1(hWnd As Long)
lnghWnd = hWnd
lpPrevWndProc = SetWindowLong(lnghWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHook()
Dim lngReturnValue As Long
lngReturnValue = SetWindowLong(lnghWnd, GWL_WNDPROC, lpPrevWndProc)
End Sub
Function WindowProc(ByVal hw As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim clp_cnt$
Select Case uMsg
Case WM_PASTE
Call CloseClipboard
clp_cnt$ = Clipboard.GetText
Clipboard.Clear
Clipboard.SetText DelExtraChrs$(clp_cnt$, ExtraChrs$)
Case WM_DESTROY
UnHook
End Select
WindowProc = CallWindowProc(lpPrevWndProc, lnghWnd, uMsg, wParam, lParam)
End Function
Public Function DelExtraChrs$(tText$, InvalidChrsGroup$)
Dim i&
For i = 1 To Len(InvalidChrsGroup$)
tText$ = Replace(tText$, Mid(InvalidChrsGroup$, i, 1), Empty, , , vbTextCompare)
Next i
DelExtraChrs$ = tText$
End Function
و این کد در خود ماژول فرم نوشته شود
Private Sub Form_Load()
Hook1 Text1.hWnd
End Sub