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("导出成功");
                }
            }


        }
    }

 

 

 

posted @ 2013-07-12 15:46  增删改查  阅读(206)  评论(0)    收藏  举报