在webbrowser控件加载网页的时候,有些网页自己设定了自己的鼠标指针样式,有没有方法只要鼠标样式改变了(比如箭头指针变成手型指针),就提示鼠标样式改变了 
所以我想只要能捕获加载网页时的鼠标样式就行了 
我看的一些资料说:Windows编程中有两种方法改变指针:一种是当应用的主窗口类注册时,为WNDCLASS结构提供一个全程光标指针(HCURSOR),另外一种方法是在程序中处理WM_SETCURSOR消息来设置鼠标光标。标准的MFC应用程序使用第一种方法自动在主窗口注册时将光标指针设置为一个箭头。如果要改变光标指针,则可以通过在主窗口或子窗口中重载消息WM_SETCURSOR的处理函数来重新设置鼠标指针。(http://www.vckbase.com/vckbase/vckbase9/vc/nonctrls/dialog_11/0911001.htm) 
我要的结果是知道鼠标样式是否改变了
那么只要截获WM_SETCURSOR消息就可以的到鼠标的样式,下面是我的方法:'通用模块Option Explicit
'窗口函数的地址可以通过AddressOf操作符获得。值得注意的是,第一,窗口函数必须是
'Visual Basic工程中标准模块中的一个函数;第二,窗口必须是自己进程中的,若不是,
'则不能AddressOf操作符对它进行子类处理。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 SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Public Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Const WM_SETCURSOR = &H20
Public Const GWL_WNDPROC = (-4)
Dim frmWnd As Long
Dim webWnd As Long
Dim OldProc As Long
Public asd As Long
Public runing As Boolean
Dim a As Integer
Public Sub SetCursorForm(hWnd As Long, wwnd As Long) '子窗口句柄,webbrowser1句柄
If OldProc <> 0 Then Exit Sub
frmWnd = hWnd
webWnd = wwnd
OldProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf MyWndProc) '改变窗口函数,备份原来的窗口函数
asd = OldProc
End Sub'新的窗口函数
Public Function MyWndProc(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongIf wMsg = WM_SETCURSOR Then
a = a + 1
Form1.Text1.Text = a & "   " & lParam '在text1记录变化
End IfMyWndProc = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam)
End Function
Public Sub Release()
If OldProc = 0 Or frmWnd = 0 Then Exit Sub '恢复窗口的默认窗口函数
SetWindowLong frmWnd, GWL_WNDPROC, OldProc
OldProc = 0
frmWnd = 0
End Sub'-----------------------------------------------------'在form1上新建一个webbrowser和text控件,在代码框输入以下代码
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Dim hwndPeer As Long 'webbrowser的句柄
  
Private Sub Form_Load()
Show
WebBrowser1.Visible = True
WebBrowser1.Navigate ("http://www.hao123.com/")'获得webbrowser的句柄
hwndPeer = FindWindowEx(Me.hWnd, 0, "Shell Embedding", vbNullString)  '网上很多帮助就找到这里就结束了,那是不能收到消息的。
hwndPeer = FindWindowEx(hwndPeer, 0, "Shell DocObject View", vbNullString)
hwndPeer = FindWindowEx(hwndPeer, 0, "Internet Explorer_Server", vbNullString)
SetCursorForm Me.hWnd, webWnd
End SubPrivate Sub Form_Unload(Cancel As Integer)
If asd <> 0 Then Release
End Sub但是我试的发现与我想的不对,上面的记录变量a和lParam只在鼠标在webbrowser外form1内才发生改变,好像鼠标样式与WM_SETCURSOR无关,但是根据msdn的说法:
lParam
The low-order word of lParam specifies the hit-test code. 
The high-order word of lParam specifies the identifier of the mouse message. 
high-order就是了~~~
还是wParam不应该是webbrowser的句柄,也不知道是不是其他原因,各位大大帮我找一下原因...........
还有最就是能不能后台截获,就是鼠标不在该控件上,如果在webbrowser控件上指针改变了,那么怎么知道鼠标样式改变了????