C# qq在线搜索 并导出QQ
软件截图

软件功能:通过QQ在线搜索 采集qq 联系人 并导出qq邮箱。。
用途:给这些在线的人发送各式各样的垃圾广告!!!
使用方法 打开qq 查询窗口 并且 切换到条件查找 (qq2013)

上代码 各种百度找来的 !
public partial class Form1 : Form
{
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "FindWindowEx", SetLastError = true)]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
[DllImport("user32.dll", EntryPoint = "GetCursorPos")]//获取鼠标坐标
public static extern int GetCursorPos(
ref POINTAPI lpPoint
);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);//设置进程窗口到最前
[StructLayout(LayoutKind.Sequential)]//定义与API相兼容结构体,实际上是一种内存转换
public struct POINTAPI
{
public int X;
public int Y;
}
[DllImport("user32.dll", EntryPoint = "WindowFromPoint")]//指定坐标处窗体句柄
public static extern int WindowFromPoint(
int xPoint,
int yPoint
);
[DllImport("user32")]
private static extern int GetWindowPlacement(IntPtr hwnd, ref WINDOWPLACEMENT lpwndpl);//获得指定窗口的状态及位置信息
[StructLayout(LayoutKind.Sequential)]
public struct WINDOWPLACEMENT
{
public int Length;
public int flags;
public int showCmd;
public POINTAPI ptMinPosition;
public POINTAPI ptMaxPosition;
public RECT rcNormalPosition;
}
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
/// <summary>
/// 传递消息给记事本
/// </summary>
/// <param name="hWnd"></param>
/// <param name="Msg"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
[DllImport("User32.DLL")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam);
[System.Runtime.InteropServices.DllImport("user32")]
private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
const int MOUSEEVENTF_MOVE = 0x0001; //移动鼠标
const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下
const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起
const int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模拟鼠标右键按下
const int MOUSEEVENTF_RIGHTUP = 0x0010; //模拟鼠标右键抬起
const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模拟鼠标中键按下
const int MOUSEEVENTF_MIDDLEUP = 0x0040; //模拟鼠标中键抬起
const int MOUSEEVENTF_ABSOLUTE = 0x8000; //标示是否采用绝对坐标
/// <summary>
/// 记事本需要的常量
/// </summary>
public const uint WM_SETTEXT = 0x000C;
public static int i = 0;
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 子窗口句柄
/// </summary>
/// <param name="hwndParent">父窗口句柄</param>
/// <param name="hwndChildAfter">前一个同目录级同名窗口句柄</param>
/// <param name="lpszClass">类名</param>
/// <returns></returns>
public static IntPtr GetChildHandle(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass)
{
return FindWindowEx(hwndParent, hwndChildAfter, lpszClass, null);
}
/// <summary>
/// 全部子窗口句柄
/// </summary>
/// <param name="hwndParent">父窗口句柄</param>
/// <param name="className">类名</param>
/// <returns></returns>
public static List<qqModel> QQlist = new List<qqModel>();
public void GetQQList()
{
string sclip = Clipboard.GetText();
}
public void init(int left, int top)
{
//鼠标定位
Cursor.Position = new Point(left, top);
Thread.Sleep(1000);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //点击弹出新窗口
SendKeys.Send("{TAB}");
//SendKeys.Send("{TAB}");
//SendKeys.Send("{TAB}");
SendKeys.Send("^a");
SendKeys.Send("^c");
Thread.Sleep(1000);
SendKeys.Send("%{F4}");
string sclip = Clipboard.GetText();
if (sclip != null && sclip != "")
{
string strSub = sclip.Substring(sclip.LastIndexOf(" ") + 1);
i++;
this.textBox1.Text = i.ToString();
qqModel model = new qqModel();
model.qqnumber = strSub;
model.id = i;
QQlist.Add(model);
this.dataGridView1.DataSource = null;
this.dataGridView1.DataSource = QQlist;
dataGridView1.Columns[0].HeaderText = "编号"; //更改第一列标题
dataGridView1.Columns[1].HeaderText = "QQ号"; //更改第一列标题
}
}
public void get(WINDOWPLACEMENT wpm, int lasti, int i)
{
//第一排
init(wpm.rcNormalPosition.Left + 110, wpm.rcNormalPosition.Top + 295);
init(wpm.rcNormalPosition.Left + 110 + 235, wpm.rcNormalPosition.Top + 295);
init(wpm.rcNormalPosition.Left + 110 + 235 + 245, wpm.rcNormalPosition.Top + 295);
//第二排
init(wpm.rcNormalPosition.Left + 110, wpm.rcNormalPosition.Top + 295 + 80);
init(wpm.rcNormalPosition.Left + 110 + 235, wpm.rcNormalPosition.Top + 295 + 80);
init(wpm.rcNormalPosition.Left + 110 + 235 + 245, wpm.rcNormalPosition.Top + 295 + 80);
//第二排
init(wpm.rcNormalPosition.Left + 110, wpm.rcNormalPosition.Top + 295 + 80 + 80);
init(wpm.rcNormalPosition.Left + 110 + 235, wpm.rcNormalPosition.Top + 295 + 80 + 80);
init(wpm.rcNormalPosition.Left + 110 + 235 + 245, wpm.rcNormalPosition.Top + 295 + 80 + 80);
//下一页110 195
if (lasti != i)
{
//鼠标定位
Cursor.Position = new Point(wpm.rcNormalPosition.Left + 110 + 235 + 245 + 110, wpm.rcNormalPosition.Top + 295 + 80 + 80 - 195);
Thread.Sleep(1000);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //点击弹出新窗口
}
}
private void button1_Click(object sender, EventArgs e)
{
IntPtr ParenthWnd = new IntPtr(0);
IntPtr EdithWnd = new IntPtr(0);
ParenthWnd = FindWindow(null, "查找联系人");
//判断这个窗体是否有效
if (ParenthWnd != IntPtr.Zero)
{
SetForegroundWindow(ParenthWnd);//将当前窗口锁定在最前
WINDOWPLACEMENT wpm = new WINDOWPLACEMENT();
GetWindowPlacement(ParenthWnd, ref wpm);
keybd_event(13, 0, 0, 0);//模拟发送回车消息
int howpage = int.Parse(ConfigurationManager.AppSettings["howpage"].ToString());
for (int i = 0; i < howpage; i++)
{
get(wpm, howpage, i);
}
}
else
{
MessageBox.Show("没有找到QQ 查找联系人窗口 请打开 QQ查找 窗口 并切换到条件查找");
}
}
private void button2_Click(object sender, EventArgs e)
{
//保存文件
SaveFileDialog saveFile = new SaveFileDialog();
//弹出框命名
saveFile.Title = "另存为";
//定义保存文件的类型
saveFile.Filter = "qq邮箱文件(*.log)|*.log|qq邮箱文件|*.*";
//默认保存文件名
saveFile.FileName = "qq.txt";
//判断是否存在此文件
//以文件“*.xls”导出
if (saveFile.ShowDialog() == DialogResult.OK)
{
string sFilePathName = saveFile.FileName;
//判断是否存在此文件
if (File.Exists(sFilePathName))
{
StreamWriter sw = new StreamWriter(sFilePathName);
foreach (var item in QQlist)
{
sw.WriteLine(item);
}
sw.Flush();
sw.Close();
MessageBox.Show("导出成功");
}
else
{
FileStream myFs = new FileStream(sFilePathName, FileMode.Create);
myFs.Flush();
myFs.Close();
StreamWriter sw = new StreamWriter(sFilePathName);
foreach (var item in QQlist)
{
sw.WriteLine(item);
}
sw.Flush();
sw.Close();
MessageBox.Show("导出成功");
}
}
}
}
浙公网安备 33010602011771号