【咨询】关于程序实现向QQ好友或MSN好友群发消息的问题!

jscn123789abc 2008-11-22 12:01:01
大家好啊!
我想请教个问题:就是如何实现向QQ好友或MSN好友群发消息的问题?
主要是在周末或一些特殊节日向好友群发祝福的消息,并不是用来发无聊的广告。

在网上看了一些这方面的资料:
大概都是通过句柄、窗体名、类名来遍历所有好友的聊天文本框,
好象功能不容易实现,可能主要是窗体名、类名找不到,
请做过这方面程序的朋友讨论一下,谢谢啦。。。
...全文
444 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsdhust 2008-11-26
  • 打赏
  • 举报
回复
nra
zzz822163 2008-11-26
  • 打赏
  • 举报
回复
还是需要自己打开窗口呀?
我以为你想搞让他自动打开窗口发消息呢
jscn123789abc 2008-11-25
  • 打赏
  • 举报
回复
up up ...
jscn123789abc 2008-11-25
  • 打赏
  • 举报
回复
请高手帮忙分析以下下面的解决方案,谢谢...

其它功能就不详细说了,这里只给大家把主要的地方将一下。
1、查找当前的所有聊天窗口。
QQ两天窗口的特点都是以******交谈中,而群则是***-群,所以只要找到所有窗口然后判断窗口标题就行了。
::EnumWindows(EnumWindowsProc_1,0) ; //需要时调用就行了
//下边这个函数必须是全局的
BOOL CALLBACK EnumWindowsProc_1(HWND hwnd,LPARAM lparam)
{
char lpWinTitle[256];
CString m_strTitle;
::GetWindowText(hwnd,lpWinTitle,256-1);
m_strTitle.Format("%s",lpWinTitle);
if(m_strTitle.Find("交谈中")!=-1||m_strTitle.Find("群")!=-1)
{
strcat(chTitle[i],m_strTitle);
i++;
}
return TRUE ;
}

2找到聊天窗口中输入内容的RichEdit控件的HWND和发送按钮的HWND
//这个函数也必须是全局的
BOOL CALLBACK EnumChildWindowsProc_1(HWND hwnd,LPARAM lparam)
{

if(hwnd)
{
char m_strClass[256];
char m_pstr[256];
char lpWinTitle[256];
HWND phwnd;
::GetClassName(hwnd,m_strClass,255);
::GetWindowText(hwnd,lpWinTitle,256-1);
phwnd=::GetParent(hwnd);
::GetClassName(phwnd,m_pstr,255);
if (!strcmp(m_strClass,"RichEdit20A")&&!strcmp(m_pstr,"AfxWnd42"))
msgHWND[k++]=hwnd;
if(!strcmp(m_strClass,"Button")&&!strcmp(lpWinTitle,"发送(S)"))
btnHWND[k]=hwnd;
return TRUE;
}
else
return FALSE;

}
//下边这个函数使用时调用就行了
::EnumChildWindows(childHWND,EnumChildWindowsProc_1,0);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
对于上边的代码,我想大家用spy++查看一下就知道了,QQRichEdit是嵌套了一层的,上边的传输消息的也叫RichEdit,只是父窗口不一样而已。
3像这些HWND发送消息
::SendMessage(msgHWND[j],EM_REPLACESEL,0,(LPARAM)m_text.GetBuffer(m_text.GetLength()));
::SendMessage(btnHWND[j],BM_CLICK,0,0);
至于问什么不用WM_PASTE大家试试就知道了,QQ把这个消息给屏蔽了,所以要用EM_REPLACESEL。
对于PostMessage,经测试没发送成功,大家可以试试,说不定是我哪搞错了。
QQ自动发消息打注意内容也就这些了,大家可以自己完善一下。
jscn123789abc 2008-11-23
  • 打赏
  • 举报
回复
//#include <afxtempl.h>
void CQQqunfaDlg::OnButton1()
{
CTypedPtrArray<CObArray, CWnd*> myArray;

// 这个m_edit是Edit Box窗口的一个变量,它存放您想发送的那句话
// 如果m_edit为空,说明您还没写您想发送的话,它提示您先写上您想发送的话
UpdateData(true);

if(m_edit.IsEmpty())
{
MessageBox("please enter what do you want to say!!!","Attention",MB_OK | MB_ICONWARNING);
return;
}
HWND hwnd=FindWindowEx(NULL,NULL,"#32770",NULL);

while(hwnd)
{
CString string;
char a[100];
HWND send,pro,pro1,message;

// 得到窗口名称
::GetWindowText(hwnd,a,100);
string.Format("%s",a);

// 如果含有"与"(因为QQ聊天窗口的名字都是"与XX聊天中");说明是QQ窗口
if(string.Find("与")>-1)
{
pro=FindWindowEx(hwnd,NULL,"#32770",NULL); //pro值为0x00000000
CWnd *pWnd=CWnd::FromHandle(pro);
pro1=FindWindowEx(pWnd->m_hWnd,NULL,"AfxWnd42",NULL); //pro1值为0xcccccccc
CWnd *child=CWnd::FromHandle(pro1);

// 找到QQ窗口的哪个写消息的文本框
message=FindWindowEx(child->m_hWnd,NULL,"RICHEDIT",NULL);
// 

if(message)
{
CRichEditCtrl* rich
= (CRichEditCtrl*)(CWnd::FromHandle(message));
rich->ReplaceSel(m_edit);
}

else
{
return;
}

send=FindWindowEx(pWnd->m_hWnd,NULL,NULL,NULL);
string="";

while(send)
{
child=CWnd::FromHandle(send);
child->GetWindowText(string);

if(string.Find("发送")>-1)
{
//加入指针数组
myArray.Add(child);
send=NULL;
}

else
{
send=FindWindowEx(pWnd->m_hWnd,send,NULL,NULL);
}
}
hwnd=::GetWindow(hwnd,GW_HWNDNEXT);
}

else
{
hwnd=::GetWindow(hwnd,GW_HWNDNEXT);
}
}

// 按照窗口数组里的窗口进行逐个发送信息
for(int count=0;count<myArray.GetSize();count++)
{
CWnd* p=myArray.GetAt(count);
p->SendMessage(BM_CLICK);
}

//  // 清空数组
myArray.RemoveAll();

// 将m_edit清空,因为下一次您要写上您想发送的话
SetDlgItemText(IDC_EDIT1,"");
m_edit="";

MessageBox("Over OK!!!","Attention",MB_OK | MB_ICONWARNING);
}

********************************************开启一个好友的聊天窗口,
设置断点行,pro=FindWindowEx(hwnd,NULL,"#32770",NULL);
运行到代码行pro1=FindWindowEx(pWnd->m_hWnd,NULL,"AfxWnd42",NULL);
时提示无法预知的错误,然后继续调试就又出现下面的错误信息:

"0x00401efa"指令引用的内存。该内存不能为"read"。
要终止程序,请单击"确定"。
要调试程序,请单击"取消"。

请朋友帮忙看一下,谢谢啦。。。
xyzyaoshunyu 2008-11-23
  • 打赏
  • 举报
回复
当焦点在QQ聊天框或者MSN聊天框上的时候,可以直接利用复制,粘贴发送信息的。
所以可以在程序中,把你要发送的内容写到剪贴板里,然后copy到qq或msn的窗体中,实现跨进程通信。
jjaikaikai 2008-11-22
  • 打赏
  • 举报
回复
是通过服务器中转的,与一般C/S结构有所不同,请看拓扑图
zzz822163 2008-11-22
  • 打赏
  • 举报
回复
关注一下,不知道你的难点在哪里?
QQ(LanQQ)[以下简称懒QQ]是在网上广为流传的飞鸽传书的基础上经过懒QQ社区几个月重新改写而成.
QQ的整个界面与当前流行的聊天工具一样,有着友好的界面(类似QQ,MSN的界面),并且继承了飞鸽传书的所有特点,
完全与原先的飞鸽传书兼容,并且在原来的基础上,增加了点对点(P2P)的聊天室,发消息.


功能说明:
- 懒QQ是一款局域网内即时通信软件, 基于 TCP/IP(UDP).
- 不需要服务器支持.
- 支持文件/文件夹的传送 (支持大文件传送[4G以上]).
- 完全兼容网上广为流传的飞鸽传书并比原来飞鸽功能更加强大.
- 给所有在线的用户发消息.
- 可以建立无需服务器的聊天室.

3.1版本新加的功能
*添加分组功能;
*修正了排序功能的BUG,使用排序更方便快捷;
*修正了多选择发送的方式,能直接在我的好友上点右键发送文件,便可以给此分组所有人发送文件,当然,你也可以按CTRL多选好友;
*重写文件发送功能,修正不能发送文件给多个人的BUG,修正不能发送多个文件给同一个人的BUG;
*重写文件发送界面,避免发送多个文件时太烦琐,统一用一个界面管理;
*修正聊天室进入第一个聊天室退出不能再进的BUG;
*重写了接收多个文件,只能接收到最后个文件;
*修正设置自动弹出消息的BUG;
*增加远程协助(注:测试版中无,在考虑以什么方式加入到程序中)
*修正了黑名单和好友的保存方式(以XML保存)
*美化界面NICO正在制作中(期待ING)
*修改界面加载方式,直接中本地文件中加载(因本人不擅长美工,如果有美工好的可以直接修改SKIN目录下面的所有图片)
*增加对多网卡的支持(上回有人在论坛说自己装了多网卡不能运行,现在可以,不过要在配置文件config.ini中修改添加NIC_IP="网卡IP")
*增加了对打开文件夹后记住上次的路径的配置;

2.0版本新加的功能
添加了聊天表情的功能;
添加了文件拖拽的功能(可以主界面上或者聊天对话框中拖拽);
添加了记录聊天记录的功能;
添加了不自动弹出消息的功能,能自定义提取消息的快捷键;
添加了自定义发送消息的快捷键,类似QQ的一样的功能;
添加了用户排序的功能;
添加了黑名单功能,防止一些恶意骚扰的功能;
修改了一些核心代码,减少系统的资源占用;
修正了托盘图标的双击事件;
修正不能随系统启动而启动的BUG;
修改懒QQ版本给飞鸽传书原版传文件的时对话框显示一些乱码;
司科仿美团O2O程序源码最新版+wap+微信版亲测完整版是一款基于PHP语言设计的团购网站源码。 司科出品,必属精品!司科公司多年网站建设经验,专业提供商城网站制作,团购网站建设,团购APP制作,商城客户端设计,微信营销系统等服务。 PC端功能介绍: 产品发布 发布以天为形式的商品项目(添加、删除、修改、编辑) 秒杀抢团项目 发布以秒为形式的商品项目 商户展示 一、商家有自己的简单的介绍页面,介绍信息和产品 二、商家可以自己的后台对商品券进行验证消费。 商家专卖店展示系统 一、合作商家可以通过后台发布自己的展示商品和商家新闻,帮助树立商家企业形象,加强与商家的合作。 二、商家可以自己的后台对商品券进行验证消费。 商家上传系统 商家可以自行上传产品,管理员审核,审核通过即可显示,审核不通过商家再修改。 商家结算系统 V1.0 超级商家结算系统,网站自动计算商家提成 超强团购商家店铺 团购商家有独立商家店铺展示,实用性强! 会员级别V1.2 根据会员消费情况等,可以自动升级级别 手机版微信支付 包括PC的扫描支付&微信公众号的微信支付 消费评价+评分功能 独家用户消费评价+评分功能,提升用户体验 城市代理商管理V1.0 每个城市产品可以由独立代理商后台管理 可修改商品时间 可对商品进行修改结束时间,让操作更加方便、人性化。 支持商品退款 提供客户申请商品模式,让商品更加自由,让客户在商品中无后顾之忧,可对商品项目设置两种模式:支持 不支持。 支持快递商品 发布项目的时候,可选择优惠券或快递。 好友邀请 用户通过人人网、开心网、MSN/QQ等社交网络邀请好友注册购买。 邮件订阅 用户用来订阅本站每天商品项目信息,方便对自己感兴趣的商品项目及时下单购买。 短信订阅 用户输入手机号码订阅商品信息,可以收到每日最新商品的短信息。 本单答疑 展示在网站右侧,用户可通过答疑,向网站客服咨询,网站管理员在后台回复后显示内容。 常见问题 展示网站内的文字信息,比如:新手指南,入门教程以及常见问题等。 短信发券 用户购买时输入手机号码,购买成功后,可收到由商品网站统一发出的优惠券帐号和密码。 团券认证 用户消费商品券时,可以在此注销或查询团券有效期。团券注销后不可二次使用。 商家地图展示 通过后台设置商家的具体位置,方便消费型商品的客户查找 项目分类首页展示 首页分类不同的产品,不同楼层展示 多城市切换 商品产品可以分配不同的城市显示 在线客服QQ 通过客服qq,方便与网站浏览者及时沟通。 强大的在线分享 用户通过MSN 人人 网易 开心 豆瓣 百度 腾讯 飞信 新浪微博 QQ空间、等,快速分享给好朋友心怡的商品 网项目。 管理员等级及授权 总管理分配下属管理员,各自管理各自的项目 后台控制分类 自可以后台控制推荐产品,分类展示商品。 邮箱发送邮件 用户可以自己设置邮箱,发邮件给用户 图片延时加载 采用图片延时加载,极大减少服务器带宽 快递单号批量上传 商家可以建立一个TXT文档,输入订单编号,快递单交给网站运营者,网站运营者在后台上传这个TXT文档, 系统批量给这些订单生成快递单号 每个项目设置自己独立的SEO 每个项目可以在后台设置自己独立的SEO,更利于网站被搜索引擎收录,让您的网站排名靠前。 整站生成静态页面 自动生成伪静态,可以增加网页访问速度及搜索引擎排名,提高网站的质量。 首页及内页广告位 通过后台的操作来发布首页及内页通栏相关的广告图片及图片链接从而及时发布重要信息和促销活动。 公告发布 统一发布公告,也可以按地区来发布相关的促销信息以及网站公告。 手机参与商品 通过手机上网参与商品。 购物车功能 方便用户一次性挑选多个商品进行购买 用户购买选择快递 让用户在购买时自己选择城市和快递公司 到货评论功能 用户对已购买的商品发表评论。增加用户粘性,吸引其他浏览者 虚拟购买人数 项目可以设置虚拟购买人数,刺激用户消费 管理员操作日志 根据需求进行后台管理员的权限分配 数据库的备份 根据需求自行在后台进行数据备份 用户调查参与 发布小调查,直观了解用户产品需求 多件免邮功能 根据购买数量设置是否免去邮费 友情链接 通过后台设置文字链接及图片链接 网站统计 客户根据统计报表可以知道每天用户访问量IP、浏览量pv、地区、ip地址及来自那个网站等,可根据时间生成报表,从而为网络营销提供依据。 WAP端功能介绍: 城市切换 触屏版会根据打开的用户地区进行自动城市更新,弹出提示,是否回到当前城市。 登陆注册 用户可以用QQ或者手机号码登陆触屏版进行购物,减少繁琐的输入选项。 在线搜索 触屏版首页有搜索框,用户可以输入自己喜欢的产品关键字进行查找购
完全兼容网上广为流传的飞鸽传书并比原来飞鸽功能更加强大 - 不需要服务器支持 - 支持文件/文件夹的传送 (支持大文件传送[4G以上]), 发送方和接收方都可查看传送进度功能 - 可以建立无需服务器的聊天室,具有聊天室的功能 - 分组功能 - 组权限功能,可能每组设置不同的权限,例如屏蔽该组成员的信息,对该组成员隐身等 - 给所有在线的用户发消息及分组发功能 - 黑名单功能 - 隐身功能,及对某特定组进行隐身功能 - 自定义备注名功能 - 个性头像、个性形象及个性签名功能 - 共享文件功能 - 远程协助功能 - 语音聊天功能 - 自定义表情功能、支持截屏、支持GIF动画 - 随手涂鸭功能,能把您的创意想法得以很好的表达 - 垃圾信息屏蔽功能 - 用户上下线进行通知功能 - 限制传送文件速度功能 - 日程安排与记事功能 - 日程提醒功能;它可以实现年、月、周、日、小时、分、秒的提醒,提醒同时可以执行动作(提示窗口、播放音乐、执行指定程序、关机等)。甚至每年的第几个月提醒、 第几月的星期几提醒等特殊的提醒。 一、如何跟对方聊天? 双击该用户,会出来一聊天对话框,在里面可以跟对方进行聊天。如要发送表情,点击表情按钮,插入表情即可。需要注意的是,如果对方使用的是IPMSG(飞鸽传书),将无法看到您发送的表情符号。在聊天时,可以选择字体按钮设置您所喜欢的字体。您还可以点击输入框右上角的随手涂鸭按钮,绘制出您想要表达的图形,做到图文并茂。 二、聊天时如果给对方发送图片? 总共有四种方法:一是点击随手涂鸭按钮,进行绘图模式,绘制图形发给对方。二是点击发送图形按钮,选择您电脑上的图片发送给对方。三是通过截屏功能,截取您自己的屏幕图像发送给对方。四是点击表情,从表情库中选择图片发送给对方。 三、怎么增加和删除表情? 增加表情有三种方法:一是点击表情按钮,选择增加表情。二是选择表情管理,导入表情库。三是对方自己发送或接收到的图片,可以选择图片点右键,选择增加至表情库中。 删除表情有两种方法:一是通过表情管理中的删除按钮来删除。二是在表情的页面中,点击要删除的表情按右键选择删除。 四、如何传送文件给对方? 在聊天对话框中,在右侧栏中的发送文件里,可以增加您要发送的文件或文件夹。同时也支持拖放功能,这是一种快捷的操作方式,操作方法是选中要发送的文件或文件夹,按住鼠标左键不动,把文件拖放到聊天对话框中,松掉鼠标左键即可。点击发送按钮把文件传送给对方。如果要查看发送的文件进度,可以选择发送文件栏旁边的文件监视按钮进行查看。在文件监视对话框中即可以查看文件发送状态,也可以取消用户还没有接收的文件。 五、如何接收对方传送来的文件? 当对方传送的文件到来时,会在聊天对话框右侧栏中的接收文件栏中显示。如果您要全部接收,点击全部接收即可。如果您只接收其中的部分文件,可以选中要接收的文件,点击接收按钮或双击要接收的文件即可。如果全部不接收点击全部拒收按钮。如果不接收其中的部分文件,选中不接收的文件,点击取消按钮。当文件在传送中时,如果要取消或中断传送,点击中断传送按钮。当文件接收完时,会从接收文件列表中移除去,在已接收文件栏中增加已传送的文件,用户可以选中已传送的文件,点击右键,进行打开目录,打开文件,删除,永久删除等一系列操作。如果文件在传送过程中,您点击了关闭按钮,文件将在后台进行接收,不影响文件的传送。 六、如何显示或不显示我的输入状态? 在聊天对话框的输入框中点击右键,设置我的输入状态。 七、如何设置对方打开消息后给我进行通知(需要回执) 点击聊天对话框的发送按钮旁边的小箭头里设置。 八、如何设置对方消息到来时只进行通知不直接弹出对话框? 点击主界面的设置按钮,在发送、接收设置栏中进行设置。 九、如何保存和查看聊天记录? 如果您还没有设置保存聊天记录的话,请点击主界面上的设置按钮,在出现一设置对话框, 选中其它设置栏中“保存聊天记录和日志”选项。然后设置下聊天记录要保存的文件位置。聊天窗口中的聊天记录按钮可以查看您跟该用户的聊天记录,全部聊天按钮可以查看全部用户的聊天内容。 十、如何设置我的用户名、组名、头像、个人形象照片及个性签名? 点击主界面上的设置按钮,在设置对话框里进行设置,其中头像指的是在用户列表中显示的头像,个人形象照片是和对方聊天时,您在对方聊天对话框中右上角部分显示的形象照片。 十一、如何共享文件或文件(夹)? 点击主界面上的设置按钮,在设置对话框里中系统设置栏里点击文件共享设置。在里面设置共享文件或文件(夹),如果您要设置密码保护,请修改密码(默认情况密码为空),这样其他用户下载时

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧