一段自动发送QQ聊天信息的代码        public void sendMessage()
        {
            IntPtr ip = IntPtr.Zero;
            if (Regex.IsMatch(text_Intptr.Text.Trim(), @"^[a-fA-F0-9]+$"))
                ip = (IntPtr)Convert.ToInt32(text_Intptr.Text.Trim(), 16);
            else
            {
                ip = FindWindow("TXGuiFoundation", TextBox_Title.Text.Trim());
                if (ip.ToInt32() == 0)
                    ip = GetIntPtr();
                if (ip == IntPtr.Zero)
                {
                    MessageBox.Show("请输入正确的标题");
                    return;
                }
            }
            SetForegroundWindow(ip);
            SetActiveWindow(ip);
            var str = "";
            var rtf = "";
            richTextBox1.Invoke(new MethodInvoker(() => { str = richTextBox1.Text.Trim(); rtf = richTextBox1.Rtf.Trim(); }));
            while (true)
            {
                if (ip.ToInt32() == GetForegroundWindow().ToInt32())
                {
                    foreach (byte c in Encoding.Default.GetBytes(str))
                    {
                        SendMessage(ip.ToInt32(), 0x101, (int)c, 1);
                        SendMessage(ip.ToInt32(), 0x102, (int)c, 1);
                    }
                    SendKeys.SendWait("%s");
                }
                Thread.Sleep(sleep);
            }
        }我就这两段代码不明白
SendMessage(ip.ToInt32(), 0x101, (int)c, 1);
SendMessage(ip.ToInt32(), 0x102, (int)c, 1);他这里为向聊天输入框插入字符,
但是他这里判断没有先去得到句柄,而是用
0x101和0x102
那这两个是怎么得来的呢?
这两个表示的是什么呢?
为什么是两个,按道理输入框只有一个啊?谢谢

解决方案 »

  1.   

    本帖最后由 bdmh 于 2013-01-16 14:52:45 编辑
      

  2.   

    0x101:按下一个键
    0x102:释放一个键
    一个down一个up
      

  3.   

    哦。。我知道了
    SendMessage(ip.ToInt32(), 0x101, (int)c, 1);
    SendMessage(ip.ToInt32(), 0x102, (int)c, 1);
    是模拟按下这个C字符的键那有没有办法取得这个输入框对像后,再用API来设置Text,
    而不是这样在窗口中进行模拟输入呢?谢谢
      

  4.   

    windows里自定义的消息id
    具体含义可以百度查一下
      

  5.   

    不过思路估计差不多,先是找到聊天窗口=》激活聊天窗口=》模拟按下CTRL+C,然后将剪切板中的内容粘贴出来就行
      

  6.   

    sendkeys
    keybd_event
    sendmessage 都可以。
      

  7.   

    你说的在程序中实现没办法的,跟msn等不一样,qq估计是为了垄断,根本就没有公开api,所以现在qq都是通过这种模拟键盘来实现的。
      

  8.   


    sendkeys就算了 不能后台操作
    sendmessage比较好。能后台操作
    最小化后都能操作