HWND=0就是程序本身的句柄啊。你用POSTMESSAGE这个函数发一个WM_QUIT给句柄为0的窗口你就知这是程序本身了。下面那个得到的非0的HWND也是程序本身的句柄吧!!

解决方案 »

  1.   

    仔细看看这个FindWindow VB声明 
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
    说明 
    寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题) 
    返回值 
    Long,找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError 
    参数表 
    参数 类型及说明 
    lpClassName String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类 
    lpWindowName String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题 
    注解 
    很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零,最简便的办法是传递vbNullString常数
     
    示例 
    Dim hw&, cnt&
    Dim rttitle As String * 256
    hw& = FindWindow("ThunderRT5Main", vbNullString) ' ThunderRTMain under VB4
    cnt = GetWindowText(hw&, rttitle, 255)
    MsgBox Left$(rttitle, cnt), 0, "RTMain title" 
      

  2.   

    关键看FindWindow的声明如果是
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 就要:
    ……=FindWindow(vbNullString, vbNullString)