如何截取QQ信息,并转发

shiling_02404 2009-03-12 07:43:00
想开发一个这样的程序.
情况是这样的:我加入了两个QQ群,假设为群A(领导群),群B(员工群).在每天的九天至十一点,想将群A中的聊天信息(会议情况),完整发送至群B.以便群B中的所有成员都能看到信息.(自动发送,不需我操作QQ,这样在我离开位置,或是忙于其他事的时候.可以避免漏掉信息.)
在网上查找一些资料说到用勾子.这方面不太了解.
我个人思路是:在时间段内,当群A有信息来时,(难点一:模拟双击闪动的QQ小图标.),让群A窗体隐藏,(难点二)获取消息,再复制.(难点三)再选择指定的群B,(难点四)将复制的内容发送出去.不知道外部的程序能否对QQ的一些发送动作进行操作?
谢谢
顶者有分.
...全文
6243 67 打赏 收藏 转发到动态 举报
写回复
用AI写文章
67 条回复
切换为时间正序
请发表友善的回复…
发表回复
智慧机器 2011-10-08
  • 打赏
  • 举报
回复
目前通用的网上可以找到的方法肯定不好用。包括拦截消息、模拟鼠标、系统API HOOK、网络封包截取等。因为这些公开的方法腾讯也肯定知道,他们为了防止木马盗取信息和密码,肯定有防范。
我能想到的唯一方法就是在QQ建立起防御措施之前HOOK系统API。估计对付NP的方法应该是可以做到的。
可惜----我不会,哈哈哈哈哈
testgroupmail 2010-04-09
  • 打赏
  • 举报
回复
研究中,顶!
「已注销」 2009-12-07
  • 打赏
  • 举报
回复
http://www.zhcolin.com.cn/QQShare/QQSharePro.htm
「已注销」 2009-12-07
  • 打赏
  • 举报
回复
原来有个Miranda IM 其中有个QQ插件可以实现这个功能,我以前用它来实现8个群互联,但后来不行了,用来转发信息的QQ号每天都被封,无法正常使用了。
刚才搜索了一一,网上有QQ群互连程序,能实现以上功能。还没试过,不知道QQ号会不会被封。
ryanho2 2009-08-28
  • 打赏
  • 举报
回复
期待!!!同求!!!
ylwqhr 2009-05-21
  • 打赏
  • 举报
回复
up
光宇广贞 2009-05-21
  • 打赏
  • 举报
回复
顶一下:

告诉你一个炫的法儿。

开着飞信。

你在别处。

然后需要的时候,给你的飞信发一个短信。

然后一个线程HOOK着飞信。收到你的短信后……

启动QQs……

复制信息……

怎么样?
heikeyanxi 2009-05-20
  • 打赏
  • 举报
回复
这难度够可以
daihua_1113 2009-05-08
  • 打赏
  • 举报
回复
期待高手来解决~!
ypf222140 2009-05-08
  • 打赏
  • 举报
回复
提交你的想法,给腾讯公司,让其采纳 你的想法, 这是 利于 大众的 举措。
mengsijun1987 2009-05-08
  • 打赏
  • 举报
回复
你把所有人都加入一个群把所有员工都禁言就可以了
zl4040 2009-05-08
  • 打赏
  • 举报
回复
不懂.过来学习!
niitnanfeng 2009-05-08
  • 打赏
  • 举报
回复
强悍。可不要做坏事就好了。搞定了分享下
xuyiazl 2009-05-08
  • 打赏
  • 举报
回复

private static void SendMsg(IntPtr hWnd, string msg)
{
if (NativeMethods.IsWindow(hWnd))
{
//找到 发送 按钮
IntPtr hwndButton = NativeMethods.FindWindowEx(hWnd, IntPtr.Zero, "Button", "发送(S)");

if (IntPtr.Zero != hwndButton)
{
//找到窗体顺序上的第一个RichEdit20A控件,其实就是消息显示框
IntPtr hwndRichEdit = NativeMethods.FindWindowEx(hWnd, IntPtr.Zero, "RichEdit20A", null);

//在顺序上是显示框的下一个窗体
if (IntPtr.Zero != hwndRichEdit)
{
//找到 AfxWnd42 这个窗体
hwndRichEdit = NativeMethods.GetWindow(hwndRichEdit, NativeMethods.GW_HWNDNEXT);
if (IntPtr.Zero != hwndRichEdit)
{
//这才是真正的消息输入框
hwndRichEdit = NativeMethods.FindWindowEx(hwndRichEdit, IntPtr.Zero, "RichEdit20A", null);
if (hwndRichEdit != IntPtr.Zero)
{
//发送消息,因为QQ屏蔽了 WM_SETTEXT, WM_PASTE 命令,所有采用 EM_REPLACESEL 来实现
NativeMethods.SendMessage(hwndRichEdit, NativeMethods.EM_REPLACESEL, IntPtr.Zero, msg);
//给发送按钮发 鼠标单击消息
NativeMethods.SendMessage(hwndButton, NativeMethods.BM_CLICK, IntPtr.Zero, IntPtr.Zero);
}
}
}
}
}
}
xuyiazl 2009-05-08
  • 打赏
  • 举报
回复


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace InjectionLibrary.Window
{
/// <summary>
/// API声明类
/// </summary>
public static class NativeMethods
{
#region Callback Delegate Section
public delegate bool EnumDesktopWindowsDelegate(IntPtr hWnd, uint lParam);
#endregion

#region Windows API Import Section

//[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true, CharSet = CharSet.Unicode)]
//public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll", EntryPoint = "FindWindowEx", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass,
string lpszWindow);

[DllImport("user32.dll", EntryPoint = "GetWindowTextLength", SetLastError = true,
CharSet = CharSet.Unicode)]
public static extern int GetWindowTextLength(IntPtr hWnd);

[DllImport("user32.dll", EntryPoint = "GetWindowText", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);

[DllImport("user32.dll", EntryPoint = "GetClassName", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern int GetClassName(IntPtr hWnd, StringBuilder buf, int nMaxCount);

[DllImport("user32.dll", EntryPoint = "EnumDesktopWindows", ExactSpelling = false,
CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool EnumDesktopWindows(IntPtr hDesktop,
EnumDesktopWindowsDelegate lpEnumCallbackFunction, IntPtr lParam);

[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern IntPtr SendMessage(IntPtr hWnd, uint wMsg, IntPtr wParam, string lParam);

[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, uint wMsg, IntPtr wParam, IntPtr lParam);

[DllImport("user32.dll", EntryPoint = "GetWindow", SetLastError = true)]
public static extern IntPtr GetWindow(IntPtr hWnd, uint wCmd);

[DllImport("user32.dll", EntryPoint = "IsWindow", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsWindow(IntPtr hWnd);

#endregion

#region Windows Message Declaration Section

public const uint BM_CLICK = 0xF5;
public const uint GW_HWNDNEXT = 0x02;
public const uint EM_REPLACESEL = 0xC2;

#endregion
}
}

消息注入!


jdhlowforever 2009-05-08
  • 打赏
  • 举报
回复
应该可以取聊天记录发送出去吧。
十八道胡同 2009-05-08
  • 打赏
  • 举报
回复
bang ding
tanxiaolin520 2009-05-08
  • 打赏
  • 举报
回复
有难度,我不懂.
sushou2009 2009-05-08
  • 打赏
  • 举报
回复
学习...哈哈不懂
jinling4388 2009-05-08
  • 打赏
  • 举报
回复
我也想知道,頂
加载更多回复(45)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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