会向那个进程ID发送一个什么样的消息呢
请高手告知,十分感谢

解决方案 »

  1.   

    ' 标准模块:Option Explicit
    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 Const GWL_WNDPROC = (-4)
    Public ret As Long' SetWindowLong 的回调函数, 利用 Msg 拦截消息
    Function WindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Debug.Print MsgWindowProc = CallWindowProc(ret, hwnd, Msg, wParam, lParam)
    End Function
    ' 窗体模块:
    Option Explicit
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Const SYNCHRONIZE = &H100000Private Sub Command1_Click()
    Dim pid As Long
    GetWindowThreadProcessId Me.hwnd, pid
    OpenProcess SYNCHRONIZE, True, pid
    End SubPrivate Sub Form_Load()
    ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WindowProc)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    SetWindowLong Me.hwnd, GWL_WNDPROC, ret
    End Sub
      

  2.   

    是返回309还是发送&H309?309跟273哪个才是
      

  3.   

    是这样的,我想拦截OpenProcess ,比如说有人想用OpenProcess来获得我的进程ID,我的程序就马上会 msgbox "ha ha"
    然后拦截
      

  4.   

    好像不对,你把click事件中的代码注释掉,还是这个结果。
    用两个程序试试。
      

  5.   

    呵呵,拦截api函数参考,如何攔截API呼叫,说明得很详细,当然你可能需要修改一下 :
    http://www.hosp.ncku.edu.tw/~cww/html/q00553.html
      

  6.   

    用spy++检测不到任何消息,还是看看楼上贴的东西吧。
    reading......