这两天做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();
}
}
}
}
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();
}
}
}
}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/
{
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();
}
}
}
}
这样就行了
结贴