C#qq模拟聊天机器人怎么写? 20
用C#模拟按键信息并发送,这样写没有效果,谁能帮我改一改?谢谢了publicpartialclassForm1:Form{[DllImport("User32.DLL")...
用C#模拟按键信息并发送,这样写没有效果,谁能帮我改一改?谢谢了
public partial class Form1 : Form
{
[DllImport("User32.DLL")]
public static extern int SendMessage(IntPtr hWnd,
uint Msg, int wParam, string lParam);
[DllImport("User32.DLL")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent,
IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
public const uint EM_REPLACESEL = 0x30A44;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Process vProcess = System.Diagnostics.Process.Start("IEXPLORE.EXE", "tencent://message/?uin=84564115");
//System.Diagnostics.Process.Start("IEXPLORE.EXE", "tencent://message/?uin=84564115");
vProcess.Refresh();
IntPtr vHandle = FindWindowEx(vProcess.MainWindowHandle,
IntPtr.Zero, "RichTextBox", null);
SendMessage(vHandle, EM_REPLACESEL, 0, "");
SendKeys.Send("{a 10}");
}
} 展开
public partial class Form1 : Form
{
[DllImport("User32.DLL")]
public static extern int SendMessage(IntPtr hWnd,
uint Msg, int wParam, string lParam);
[DllImport("User32.DLL")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent,
IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
public const uint EM_REPLACESEL = 0x30A44;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
Process vProcess = System.Diagnostics.Process.Start("IEXPLORE.EXE", "tencent://message/?uin=84564115");
//System.Diagnostics.Process.Start("IEXPLORE.EXE", "tencent://message/?uin=84564115");
vProcess.Refresh();
IntPtr vHandle = FindWindowEx(vProcess.MainWindowHandle,
IntPtr.Zero, "RichTextBox", null);
SendMessage(vHandle, EM_REPLACESEL, 0, "");
SendKeys.Send("{a 10}");
}
} 展开
2个回答
展开全部
这个程序有几个问题:
1、QQ聊天窗口的父窗口不是IE,而是桌面。所以IntPtr vHandle = FindWindowEx(vProcess.MainWindowHandle,
IntPtr.Zero, "RichTextBox", null); vHandle肯定返回0,找不到。
2、QQ聊天窗口的文字输入窗口的窗口类名是RichEdit20A,它所处的窗口层次是这样的:桌面/"#32770"“与 XXX 聊天中”/"#32770"""/"AfxWnd42"""(第二个AfxWnd42子窗口)/"RichEdit20A", ""
3、应向QQ聊天窗口的文字输入窗口发送EM_SETTEXTEX消息,来修改其中的内容。
4、在模拟发送键之前,应先调用SetForegroundWindow让QQ聊天窗口的文字输入窗口成为前景窗口。
5、可以模拟Alt+S键实现发送功能:
SendKeys.Send("%S");
逐步解决这些问题,你的程序就可以正常工作了。你会成功的。
1、QQ聊天窗口的父窗口不是IE,而是桌面。所以IntPtr vHandle = FindWindowEx(vProcess.MainWindowHandle,
IntPtr.Zero, "RichTextBox", null); vHandle肯定返回0,找不到。
2、QQ聊天窗口的文字输入窗口的窗口类名是RichEdit20A,它所处的窗口层次是这样的:桌面/"#32770"“与 XXX 聊天中”/"#32770"""/"AfxWnd42"""(第二个AfxWnd42子窗口)/"RichEdit20A", ""
3、应向QQ聊天窗口的文字输入窗口发送EM_SETTEXTEX消息,来修改其中的内容。
4、在模拟发送键之前,应先调用SetForegroundWindow让QQ聊天窗口的文字输入窗口成为前景窗口。
5、可以模拟Alt+S键实现发送功能:
SendKeys.Send("%S");
逐步解决这些问题,你的程序就可以正常工作了。你会成功的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |