如何实现QQ自动填充用户名和密码,并自动登录?

时间:2023-01-20 20:48:16
如何实现QQ自动填充用户名和密码,并自动登录?

我枚举该窗口的所有控件,并向所有控件
::SendMessage(pwnd->GetSafeHwnd(), WM_SETTEXT, 0, (LPARAM)(LPCTSTR)"bbb");
结果 除了密码控件外,都成功了。
可我要对密码框自动设置内容,怎么办?
我用的是QQ2007

9 个解决方案

#1


qq对密码框有保护,试下发送WM_CHAR,一个个地填上去

#2


SendInput  Keyboard_Event 

#3


楼上能说的详细些吗?

#4


网上有QQ2008自动登陆的开源代码,
别的版本没有测试过。。。

#5


该回复于2011-01-10 09:14:03被版主删除

#6


谢谢大家.
qq2007/2008我用命令行已经通过了,但 2009必须用模拟键盘的方式.


void SetPassWard(CString strPass)
{//模拟键盘消息,输入密码
for (int row = 0; row < strPass.GetLength(); row ++)
{
   char pChar = strPass.GetAt(row);
   SHORT ks = VkKeyScan(pChar);
   BYTE key = ks & 0xFF;
   keybd_event(key,0,0,0);
   keybd_event(key,0,KEYEVENTF_KEYUP,0);
}
}

void CTest_kbDlg::OnButton2() 
{
// TODO: Add your control notification handler code here
CWnd * h = FindWindow(NULL, "aaa" ); //mmm为对话框标题

if (h == NULL)
MessageBox("null");
else
MessageBox("not null");

CWnd *pwnd=h->GetWindow(GW_CHILD);//枚举对话框的所有子控件
char *buf=new char[512];
while(pwnd!=NULL)
    {
memset(buf,0, 512);
::GetClassName(pwnd->GetSafeHwnd(),buf,512);//得到枚举的控件是什么类型的,  
if(strcmp(buf, "Edit") == 0)
{
::SendMessage(pwnd->m_hWnd,WM_SETFOCUS,0,0);
Sleep(3000);
CString strPassward ="aaaaa";
SetPassWard(strPassward);
break;
}
pwnd = pwnd->GetNextWindow();
    }
}

但是模拟键盘没有成功.
SetPassWard()本身没问题, 如果setfocus()本窗口控件,然后SetPassWard()成功.
但现在是对其他窗口中的控件模拟键盘输入.
::SendMessage(pwnd->m_hWnd,WM_SETFOCUS,0,0); 好象是成功了.
但模拟键盘没有成功. 另一个程序aaa.exe中没有任何显示.
why?



#7


该回复于2011-01-11 10:38:58被版主删除

#8


不太清楚

#9


QQ2010现在的密码框上面有个假的透明的编辑框。

#1


qq对密码框有保护,试下发送WM_CHAR,一个个地填上去

#2


SendInput  Keyboard_Event 

#3


楼上能说的详细些吗?

#4


网上有QQ2008自动登陆的开源代码,
别的版本没有测试过。。。

#5


该回复于2011-01-10 09:14:03被版主删除

#6


谢谢大家.
qq2007/2008我用命令行已经通过了,但 2009必须用模拟键盘的方式.


void SetPassWard(CString strPass)
{//模拟键盘消息,输入密码
for (int row = 0; row < strPass.GetLength(); row ++)
{
   char pChar = strPass.GetAt(row);
   SHORT ks = VkKeyScan(pChar);
   BYTE key = ks & 0xFF;
   keybd_event(key,0,0,0);
   keybd_event(key,0,KEYEVENTF_KEYUP,0);
}
}

void CTest_kbDlg::OnButton2() 
{
// TODO: Add your control notification handler code here
CWnd * h = FindWindow(NULL, "aaa" ); //mmm为对话框标题

if (h == NULL)
MessageBox("null");
else
MessageBox("not null");

CWnd *pwnd=h->GetWindow(GW_CHILD);//枚举对话框的所有子控件
char *buf=new char[512];
while(pwnd!=NULL)
    {
memset(buf,0, 512);
::GetClassName(pwnd->GetSafeHwnd(),buf,512);//得到枚举的控件是什么类型的,  
if(strcmp(buf, "Edit") == 0)
{
::SendMessage(pwnd->m_hWnd,WM_SETFOCUS,0,0);
Sleep(3000);
CString strPassward ="aaaaa";
SetPassWard(strPassward);
break;
}
pwnd = pwnd->GetNextWindow();
    }
}

但是模拟键盘没有成功.
SetPassWard()本身没问题, 如果setfocus()本窗口控件,然后SetPassWard()成功.
但现在是对其他窗口中的控件模拟键盘输入.
::SendMessage(pwnd->m_hWnd,WM_SETFOCUS,0,0); 好象是成功了.
但模拟键盘没有成功. 另一个程序aaa.exe中没有任何显示.
why?



#7


该回复于2011-01-11 10:38:58被版主删除

#8


不太清楚

#9


QQ2010现在的密码框上面有个假的透明的编辑框。