利用Visual C++实现QQ消息群发
2010-07-25 20:45:44 来源:WEB开发网第三步,模拟鼠标点发送按钮的操作,可以通过取得该按钮的指针,然后发送一个BM_CLICK消息就可以了。
通过程序模拟,实现的非常好。用VC6建立一个简单的对话框程序,添加一个按钮(改Caption值为发送),为该按钮填加以下执行代码:
void CMySMSDlg:: QQSendMessage()
{
CString str;
CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
while (pMainWnd)
{
HWND hWnd,hNext;
hWnd = pMainWnd->m_hWnd;
pMainWnd->GetWindowText(str);
if(str.Find ("聊天")>-1){//找到聊天主窗口Begin
//找RichEdit
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"#32770",NULL);
pMainWnd = CWnd::FromHandle(hWnd);
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"AfxWnd42",NULL);
CWnd* pChildWnd=CWnd::FromHandle(hWnd);
int nLen = str.GetLength ();
hNext = FindWindowEx(pChildWnd->m_hWnd,NULL,"RICHEDIT",NULL);
if(hNext){//找到消息填写控件
CRichEditCtrl* pRich=(CRichEditCtrl*)(CWnd::FromHandle(hNext));
pRich->GetWindowText (str);
pRich->SetSel (nLen,nLen);
pRich->ReplaceSel ("成都外国语学校 黄东");//填上将要发送的内容
}else return;
//找消息发送按钮
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,NULL,NULL);
while (hWnd) {
pChildWnd=CWnd::FromHandle(hWnd);
pChildWnd->GetWindowText(str);
if(str.Find ("发送")>-1){
pChildWnd->SendMessage (BM_CLICK);//发送
return;// 退出
}
hWnd=FindWindowEx(pMainWnd->m_hWnd,hWnd,NULL,NULL);
}
return;
}//找到聊天主窗口End
else pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT); //继续找
}//While
}
至此,主要部件已经实现了,如何让程序自动为每个好友打开聊天窗口,和这个也差不了太多,就留给各位去研究吧,这条思路适合目前所有的IM软件。
程序在VC6下编译通过(文件很小,只有20KB),操作系统为Windows 2000 SP4,QQ版本为2004 SP1,按发送按钮之前需要打开一个聊天窗口。
更多精彩
赞助商链接