Как получить текст из окна чата mIRC в C # / Win32? - PullRequest
0 голосов
/ 14 февраля 2009

Это упрощенная версия того, что я пытаюсь реализовать, чтобы получить текст из окна чата 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?

Ответы [ 3 ]

1 голос
/ 14 февраля 2009

Вы можете общаться с mIRC, используя Windows DDE. Вы можете прочитать об этом здесь . Однако я не уверен, позволит ли это вам получить текст.

0 голосов
/ 01 января 2010

mIRC рисует содержимое самого окна чата, поэтому WM_GETTEXT не будет работать. Вы можете написать прокси-сервер и затем изменить настройки mIRC для использования вашего прокси-сервера. Таким образом, вы можете захватить всю связь между mIRC и IRC-сервером.

0 голосов
/ 15 февраля 2009

Вы уверены, что статика действительно содержит текст и / или у вас правильная статика? Например, если статическое отображение изображения, вы не получите текст (потому что нет текста для получения), а SendMessage вернет 0. См. [Здесь] (http://msdn.microsoft.com/en-us/library/ms632627(VS.85).aspx).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...