VBΪ×Ô¼ºµÄ³ÌÐòÉ趨ÏûÏ¢(¿É½ÓÊÕ´¦Àí)
VBΪ×Ô¼ºµÄ³ÌÐòÉ趨ÏûÏ¢(¿É½ÓÊÕ´¦Àí)
Posted by JiaJia 5 March,2009 (0)Comment
¡¡¡¡ÓÃAPIº¯Êý SetWindowLong Ö¸¶¨´¦ÀíÏûÏ¢µÄ´°¿Ú¹ý³ÌΪ×Ô¶¨ÒåµÄº¯Êý WindowProc£¬²¶»ñÏûÏ¢IDΪ WM_USER+1 µÄ×Ô¶¨ÒåÏûÏ¢»òϵͳÏûÏ¢¡£²¢ÇÒ£¬ÎªÁ˱£Ö¤´°¿ÚÄÜÕýÈ·µÄÏìÓ¦ÏûÏ¢£¬ÐèÒª±£´æÔÀ´Ä¬ÈϵĴ°¿Ú¹ý³Ì²¢ÔÚ×Ô¶¨Ò庯ÊýWindowProcÖе÷Óá£ÈçÏÂÀý£¬ÔÚ°´Å¥Ê¼þÖз¢ËÍ×Ô¶¨ÒåÏûÏ¢£¬WindowProc ²¶»ñÁË´°¿Ú´óС±ä»¯µÄϵͳ¶¨ÒåÏûÏ¢ºÍÓû§×Ô¶¨ÒåµÄÏûÏ¢²¢ÏÔʾÓû§×Ô¶¨ÒåµÄÏûÏ¢²ÎÊý wParam¡£
Form ²¿·Ö´úÂë
Private Sub Command1_Click()
Dim wParam As Long
Dim lParam As Long
Dim lResult As Long
¡¡wParam = 12345
¡¡lResult = SendMessage(Me.hwnd, WM_USER + 1, wParam, lParam)
End Sub
Private Sub Form_Load()
¡¡Me.Tag = Hook(Me.hwnd)
End Sub
Private Sub Form_Unload(Cancel As Integer)
¡¡Unhook Me.hwnd, Me.Tag
End Sub
Mod ²¿·Ö´úÂë
Option Explicit
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
Public 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
Public Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Const GWL_WNDPROC = -4
Public Const GWL_USERDATA = (-21)
Public Const WM_SIZE = &H5
Public Const WM_USER = &H400
Public Function Hook(ByVal hwnd As Long) As Long
¡¡Dim pOld As Long
'Ö¸¶¨×Ô¶¨ÒåµÄ´°¿Ú¹ý³Ì
¡¡pOld = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
'±£´æÔÀ´Ä¬ÈϵĴ°¿Ú¹ý³ÌÖ¸Õë
¡¡SetWindowLong hwnd, GWL_USERDATA, pOld
¡¡Hook = pOld
End Function
Public Sub Unhook(ByVal hwnd As Long, ByVal lpWndProc As Long)
¡¡Dim temp As Long
¡¡'×¢ÊÍ£ºCease subclassing.
¡¡temp = SetWindowLong(hwnd, GWL_WNDP
Ïà¹ØÎĵµ£º
VBÈí¼þ¹¤³Ìʦ£º
ְλÃèÊö£º
1¡¢½øÐбàÂë¡¢²âÊÔ£»
2¡¢Ôڹ涨ʱ¼äÄÚÌá½»Ô´´úÂë¡£
¸ÚλҪÇó£º
1¡¢ÊìϤMS SQLÊý¾Ý¿â£»
2¡¢ÊìϤVB 6.0£»
3¡¢ÓÐÒµÎñϵͳ¿ª·¢¾Ñ飻
4¡¢¾ß±¸Á¼ºÃµÄÍŶӺÏ×÷¾«Éñ£¬ÇÚ·Ü¡¢ÉϽø£»
5¡¢´óר»òÕßÒÔÉÏѧÀú£»
6¡¢¾ßÓÐ1Äê»òÕßÒÔÉÏÏà¹Ø¹¤×÷¾Ñé £»
7¡¢ÊìϤC#ÓÅÏÈ¡£
VBÐÂÊÖ¡¢³õ¼¶³ÌÐòÔ±¹«Ë¾Ìṩרà ......
ÔÚVB Öе÷Óö¯Ì¬Á¬½Ó¿â
2001-11-08· · ··yesky
1 2 3 4 5 6 7 8 ÏÂÒ»Ò³
¡¡¡¡×÷ΪһÖÖ¼òµ¥Ò×ÓõÄWindows¿ª·¢»·¾³£¬Visual Basic´ÓÒ»ÍÆ³ö¾ÍÊܵ½Á˹ã´ó±à³ÌÈËÔ±µÄ»¶Ó¡£Ëüʹ ³ÌÐòÔ±²»±ØÔÙÖ±½ÓÃæ¶Ô·×·±¸´ÔÓµÄWindowsÏûÏ¢£¬¶ø¿ÉÒÔ½«¾«Á¦Ö÷Òª¼¯ÖÐÔÚ³ÌÐò¹¦ÄܵÄʵÏÖÉÏ£¬´ó´óÌá¸ßÁ˱ ......
¾Ý˵vb6ÖÐ,×Ö ·û´®ÒÔÒÔUNICODE·½Ê½´æ´¢£¬ËùÒÔ
Private Type UDT
lngM1 As Long
lngM2 As Long
strM3 As String * 18
strM4 As String * 8
lngM5 As Long
End Type
Private Sub Command4_Click()
Dim tmp As UDT
With tmp
.lngM1 = 1
.lngM2 = 2
' .str ......
×ÜÊö
±¾ÎÄÐðÊöÁËÈçºÎÔÚVBÖÐʵÏֿؼþµÄIobjectSafety½Ó¿Ú£¬ÒÔ±êÖ¾¸Ã¿Ø¼þÊǽű¾°²È«ºÍ³õʼ»¯°²È«µÄ¡£VB¿Ø¼þĬÈϵĴ¦Àí·½Ê½ÊÇÔÚ×¢²á±íÖÐ×¢²á×é¼þÀàÀ´±êʶÆä°²È«ÐÔ£¬µ«ÊµÏÖIobjectSafety½Ó¿ÚÊǸüºÃµÄ·½·¨¡£±¾ÑÔÓï°üÀ¨ÁËʵÏÖ¹ý³ÌÖÐËùÐèµÄËùÓдúÂë¡£
Çë×¢Ò⣬¿Ø¼þÖ»ÓÐȷȷʵʵÊǰ²È«µÄ£¬²ÅÄܱ»±êʶΪ“°²È«µÄ”¡£±¾ ......