1.用Win32 API函数h=GetWindow(Hwnd,GW_CHILD)
结合GetNextWindow(A,GW_HWNDNEXT) //A位GetWindow()函数的返回值
2.不是所有的Window都有句柄(Handle)的.
具体语法请看WIN32联机帮助。
sorry,写错了,我是说不是所有的控件都有窗口句柄的
1.static control没有窗口句柄,应该是通过vb的方法吧?不太清楚
2.getclassname可以获得窗口的类名
3.findwindowex边历后可以获得所有的子窗口
都是win32api
HWND GetDlgItem(
HWND hDlg, // handle of dialog box
int nIDDlgItem // identifier of control
);
用下面的函数创建枚举某一窗口子窗口听回调:
BOOL EnumChildWindows(
HWND hWndParent, // handle to parent window
WNDENUMPROC lpEnumFunc, // pointer to callback function
LPARAM lParam // application-defined value
);
可以在VB中写好函数后,用ADDRESSOF把这个函数指针传给ENUMCHILDWINDOWS中的LPENUMFUNC来实现。当然获得窗口的句柄后,再对这个窗口如何操作,就看需要了。
比如:
int GetClassName(
HWND hWnd, // handle of window
LPTSTR lpClassName, // address of buffer for class name
int nMaxCount // size of buffer, in characters
);
DWORD SetClassLong(
HWND hWnd, // handle of window
int nIndex, // index of value to change
LONG dwNewLong // new value
);等等。