Domanda

In una domanda precedente, ho chiesto come inviare il testo al notepad . Mi ha aiutato immensamente. Da parte 2, ecco una versione semplificata dello stesso mIRC applicata:

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

Questo sembra corretto per me, tranne che non funziona! E 'che i nomi delle finestre sono corretti (MDIClient, mIRC_Channel, e Edit)? Questi sono valori che ho trovato su un sito web di googling "FindWindowEx mIRC".

1.) Quello che sto facendo di sbagliato in quanto sopra?

2.) Per riferimento, in generale, c'è un modo semplice per trovare tutti i nomi delle finestre per l'utilizzo con FindWindowEx()?

È stato utile?

Soluzione

Questo codice funziona per me (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");

Si noti la classe di finestra mutato (richedit20A invece di modifica). Appena trovato la classe corretta utilizzando Spy ++.

Per quanto riguarda le maniglie delle finestre, una possibilità è quella di utilizzare il EnumWindows o EnumChildWindows API.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top