读书人

请教小弟我用hook拦截wm_create但是分

发布时间: 2012-07-30 16:19:05 作者: rapoo

请问我用hook拦截wm_create但是分析lparam里的窗口创建信息怎么感觉没对
主要是CREATESTRUCT这个类,感觉从指针lparam里得到的数据不正确,貌似是类定义错了?

VB code
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 LongEnd 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风格也不行,请教我出错在哪里谢谢

[解决办法]
那更能说明,它是在Create之后再显示的了。

我感觉它是这样的:刚Create时,它在可视区域之外,然后进过一些处理,再移动到可视区域内(显示)。


因此你的HOOK方法,可能无法达到你的目的。
还不如让它那个窗口启动后,再使它不可见好解决点。

读书人网 >VB

热点推荐