这是我试图从mIRC聊天窗口中获取文本的简化版本:
[DllImport("user32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hwnd, int msg, int wParam, StringBuilder sb);
public const int WM_GETTEXT = 0x000D;
IntPtr mainHandle = FindWindow("mIRC", null);
IntPtr serverHandle = FindWindowEx(mainHandle, new IntPtr(0), "MDIClient", null);
IntPtr chanHandle = FindWindowEx(serverHandle, new IntPtr(0), "mIRC_Channel", null);
IntPtr staticHandle = FindWindowEx(chanHandle, new IntPtr(0), "Static", null);
int length = 50000;
StringBuilder sb = new StringBuilder(length + 1);
SendMessage(staticHandle, WM_GETTEXT, length + 1, sb);
textBox1.Text = sb.ToString();
然而,这并没有返回任何东西。它适用于其他窗口,而不是静态窗口。为什么?请不要对我如何从mIRC窗口读取文本提出任何建议?
答案 0 :(得分:1)
您可以使用Windows DDE与mIRC进行通信。你可以阅读它here。我不确定这是否能让你获得文本。
答案 1 :(得分:0)
你确定静态真的包含文字和/或你有正确的静态吗?例如,如果它是静态显示图像,则不会得到文本(因为没有要获取的文本),SendMessage将返回0.请参见[here](http://msdn.microsoft.com/en-us/library/ms632627(VS.85).aspx)。
答案 2 :(得分:0)
mIRC绘制聊天窗口本身的内容,这就是为什么WM_GETTEXT不起作用的原因。您可以编写代理服务器,然后更改mIRC设置以使用代理服务器。这样你就可以捕获mIRC和IRC服务器之间的整个通信。