Pregunta

En una pregunta anterior, me preguntó cómo enviar texto a la agenda. Me ha ayudado enormemente. Para la parte 2, he aquí una versión simplificada de la misma aplicada mIRC:

[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 Editar)? Estos son los valores que encontré en un sitio web buscando en Google "FindWindowEx mIRC".

1.) ¿Qué estoy haciendo mal en el anterior?

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

¿Fue útil?

Solución

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");

Tenga en cuenta la clase de ventana ha cambiado (RichEdit20A lugar de edición). Acaba de encontrar la clase correcta mediante el uso de Spy ++.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top