怎么获取qq对话窗体里输入框的句柄

fromxiaoqiang 2008-11-20 11:08:38
这两天做qq群发的东西,开始研究获得qq窗体的句柄,主要代码如下,不知道问题出在哪啊?各位高手帮帮忙啊:
private void MySendMessage()
{
string machinename = System.Environment.MachineName;
Process[] processlist = Process.GetProcesses(machinename);
foreach (Process p in processlist)
{
if (p.MainWindowTitle != "")
{
if (p.MainWindowTitle.ToString().Substring(0, 1) == "与" || p.MainWindowTitle.ToString().Substring(0, 1) == "临")//查看窗口标题第一个字是否是“与”。如果是的,说明是QQ窗口
{
hwndQQ = FindWindow("#32770", p.MainWindowTitle.ToString());

hwnd1 = GetDlgItem(hwndQQ, 0);
hwnd2 = GetDlgItem(hwnd1, 0);
hwnd3 = GetDlgItem(hwnd2, 894);
SendMessage(hwnd1, 194, 0, this.txtMessage.Text);//向QQ输入框粘贴字符,this.textBox1.Text是要发送的文字信息
hwnd4 = GetDlgItem(hwnd1, 1);
SendMessage(hwnd4, 245, 0, Convert.ToString(0));
Thread.Sleep(100);
p.CloseMainWindow();
}
}
}
}
得到的hwnd的值都是0,很让我郁闷啊。
后来我又改了一点,可还是不对啊,改过的代码如下:
private void MySendMessage()
{
string machinename = System.Environment.MachineName;
Process[] processlist = Process.GetProcesses(machinename);
foreach (Process p in processlist)
{
if (p.MainWindowTitle != "")
{
if (p.MainWindowTitle.ToString().Substring(0, 1) == "与" || p.MainWindowTitle.ToString().Substring(0, 1) == "临")//查看窗口标题第一个字是否是“与”。如果是的,说明是QQ窗口
{
hwndQQ = FindWindow("#32770", p.MainWindowTitle.ToString());
hwnd1 = GetDlgItem(hwndQQ, 894);//894是我用spy++获得的输入框的id
//hwnd2 = GetDlgItem(hwnd1, 0);
//hwnd3 = GetDlgItem(hwnd2, 894);
SendMessage(hwnd1, 194, 0, this.txtMessage.Text);//向QQ输入框粘贴字符,this.textBox1.Text是要发送的文字信息
hwnd4 = GetDlgItem(hwnd1, 1);
SendMessage(hwnd4, 245, 0, Convert.ToString(0));
Thread.Sleep(100);
p.CloseMainWindow();
}
}
}
}
...全文
691 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fromxiaoqiang 2008-11-24
  • 打赏
  • 举报
回复
private void MySendMessage()
{
string machinename = System.Environment.MachineName;
Process[] processlist = Process.GetProcesses(machinename);
foreach (Process p in processlist)
{
if (p.MainWindowTitle != "")
{
if (p.MainWindowTitle.ToString().Substring(0, 1) == "与" || p.MainWindowTitle.ToString().Substring(0, 1) == "临")//查看窗口标题第一个字是否是“与”。如果是的,说明是QQ窗口
{
hwndQQ = FindWindow("#32770", p.MainWindowTitle.ToString());

hwnd1 = GetDlgItem(hwndQQ, 0);
hwnd2 = GetDlgItem(hwnd1, 894);
SendMessage(hwnd1, 194, 0, this.txtMessage.Text);//向QQ输入框粘贴字符,this.textBox1.Text是要发送的文字信息
hwnd4 = GetDlgItem(hwnd1, 1);
SendMessage(hwndQQ, 245, 0, Convert.ToString(0));
Thread.Sleep(100);
p.CloseMainWindow();
}
}
}
}
这样就行了
结贴
fromxiaoqiang 2008-11-24
  • 打赏
  • 举报
回复
这个问题我已经解决了,但qq不让给陌生人发消息,需要验证码,呵呵,所以我的努力就白费了。
jscn123789abc 2008-11-22
  • 打赏
  • 举报
回复
我也想知道答案,
听说还需要转发的...
feiyun0112 2008-11-20
  • 打赏
  • 举报
回复
http://www.cnblogs.com/seabreezefreecloud/archive/2007/09/18/897192.html

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/
fromxiaoqiang 2008-11-20
  • 打赏
  • 举报
回复
这个我看过了,跟我这个原理是一样的,可就是执行不出结果啊。
但还是要谢谢你。

111,090

社区成员

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

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

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