请问我用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方法,可能无法达到你的目的。
还不如让它那个窗口启动后,再使它不可见好解决点。