2009-02-07 14 views
6

En una pregunta anterior, pregunté how to send text to Notepad. Me ayudó muchísimo. Para la parte 2, he aquí una versión simplificada de la misma aplicada mIRC:¿Cómo escribir y enviar texto a mIRC en C#/Win32?

[DllImport("User32.dll", EntryPoint = "FindWindow")] 
public static extern IntPtr FindWindow(String lpClassName, String lpWindowName); 
[DllImport("user32.dll", EntryPoint = "FindWindowEx")] 
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 
[DllImport("User32.dll")] 
public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam); 

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 editHandle = FindWindowEx(chanHandle, new IntPtr(0), "Edit", null); 

SendMessage(editHandle, 0x000C, 0, textBox1.Text); 

Esto me parece correcto, excepto que no funciona! ¿Es que los nombres de las ventanas son incorrectos (MDIClient, mIRC_Channel y Edit)? Estos son valores que encontré en un sitio web buscando en Google "FindWindowEx mIRC".

1.) ¿Qué estoy haciendo mal en lo de arriba?

2.) Como referencia, en general, ¿hay una manera fácil de encontrar todos los nombres de ventana para usar con FindWindowEx()?

Respuesta

4

Este código funciona para mí (mIRC 6.31):

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 editHandle = FindWindowEx(chanHandle, new IntPtr(0), "richEdit20A", null); 
SendMessage(editHandle, 0x000C, 0, "Hello World"); 

Aviso cambio de la clase de ventana (RichEdit20A lugar de edición). Acabo de encontrar la clase correcta usando Spy ++.

En cuanto a los identificadores de ventanas, una posibilidad es utilizar la API EnumWindows o EnumChildWindows.

Cuestiones relacionadas