主要是CREATESTRUCT这个类,感觉从指针lparam里得到的数据不正确,貌似是类定义错了?Public Type CREATESTRUCT
    lpCreateParams As Long
    hInstance   As Long
    hMenu   As Long
    hWndParent   As Long
    cy   As Long
    cx   As Long
    Y   As Long
    X   As Long
    Style   As Long
    lpszName   As Long
    lpszClass   As Long
    ExStyle   As Long
End Type
'上面是定义的CREATESTRUCT类
Public Function WindowProc(ByVal Code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
      Dim WinInfo As CREATESTRUCT
      Select Case Code
      Case 3
                CopyMemory WinInfo, ByVal lParam, Len(WinInfo)
                WinInfo.Style = WinInfo.Style And (Not &H10000000)                CopyMemory ByVal lParam, WinInfo, Len(WinInfo)                Debug.Print WinInfo.cx, WinInfo.cy, WinInfo.X, WinInfo.Y, Hex(wParam) '这里是显示窗口的创建大小以及坐标,但是显示的结果明显没对,wininfo.cy的值相当大,有几万,wininfo.x,wininfo.y的结果也不正确,都和实际不符
      End Select
      WindowProc = CallNextHookEx(lHook, Code, wParam, lParam)
End Function我的意思是想让这个窗口在启动时就是不可见的,但是我在上文中去掉了ws_visible风格也不行,请教我出错在哪里谢谢

解决方案 »

  1.   

    是别人的程序吧?也许他的代码在 Create之后,再让窗口可见呢。这样,那个结构参数就没作用了。
    不知道在“之后”,你再找个机会让它隐藏行不? ^_^
      

  2.   

    但是有个很大问题是创建坐标不对啊,wininfo.cy的值相当大,有几万,这个明显有问题
      

  3.   

    那更能说明,它是在Create之后再显示的了。我感觉它是这样的:刚Create时,它在可视区域之外,然后进过一些处理,再移动到可视区域内(显示)。
    因此你的HOOK方法,可能无法达到你的目的。
    还不如让它那个窗口启动后,再使它不可见好解决点。