VB遍历所有窗口的简单方法
(2012-02-12 17:49:41)
标签:
it |
FindWindow()
GetNextWindow()
GetChileWindow()
可以像遍历目录一样地遍历所有窗口包括控件,甚至比spy++都详细。
下面是搜索到指定标题的IE,然后把他指定到其他URL的代码......
void SetTopWindow(HWND hwnd)
{
}
int CompareText(const TCHAR *title,const TCHAR *findName)
{
}
HWND FindMikeIE(TCHAR *title)
{
}
void FindIEAndChangeURL(char *title,char * URL)
{
}
>>>>>>>>>>>>>>>>
HWND FindWindowEx(
HWND hwndParent, // handle to parent window 父窗口句柄
HWND hwndChildAfter, // handle to a child window
子窗口句柄,如果为NULL就从第一个开始找
LPCTSTR lpszClass, // pointer to class name 类名
LPCTSTR lpszWindow // pointer to window name
窗口或者控件的title或者caption
);
----------------------------------------------------------
那FindWindowEx 到底是要做什么呢?
他不是要返回一个句柄吗,它返回的是哪个窗口的句柄?
-----------------------------------------------------------
FindWindowEx是返回子窗口句柄用的
比如:打开一个.txt文件
你用FindWindow函数只能找到父窗口的名字可能是ff.txt
但你要找到文件输入框就用这个FindWindEx函数
----------------------------------------------------------
这是一个使用FindWindowEx枚举窗口的例子
#include <windows.h>
#include <STDIO.H>
BOOL myEnumWindow(HWND hwnd);
int main()
{
myEnumWindow(NULL);
return 0;
}
BOOL myEnumWindow(HWND inHwnd)
{
char szText[256];
HWND hwndAfter = NULL;
while(hwndAfter = ::FindWindowEx(inHwnd,hwndAfter,NULL,NULL))
{
memset(szText,0,256);
::SendMessage(hwndAfter,WM_GETTEXT,(WPARAM)256,(LPARAM)szText);
printf("%s\t",szText);
myEnumWindow(hwndAfter);
}
return 1;
}
>>>>>>>>>>>>>
函数功能:该函数返回z序中的前一个或后一个窗口的句柄。下一窗口在指定窗口的下面,前一窗口则在上面。如果指定的窗口是顶端窗口,该函数返回下一个(或前一个)顶端窗口的句柄。如果指定的窗口是顶层窗口,函数返回下一个(或前一个)顶层窗口的句柄。如果函数是子窗口,则函数搜索下一个或前一个子窗口的句柄。
|