Je souhaite récupérer du texte d'une zone de texte dans mon autre application. ProcessName de la deuxième application est 'TestTextBox', le nom de TextBox est 'textBox1'.Obtenir du texte d'une autre application
Mon code, qui renvoie une chaîne vide:
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, long wParam, [MarshalAs(UnmanagedType.LPStr)] StringBuilder lParam);
Process[] processes = Process.GetProcessesByName("TestTextBox");
foreach (Process p in processes)
{
IntPtr pFoundWindow = p.MainWindowHandle;
const int WM_GETTEXT = 0x0D;
StringBuilder sb = new StringBuilder();
IntPtr retVal = SendMessage(pFoundWindow, WM_GETTEXT, 100, sb);
MessageBox.Show(sb.ToString());
}
LINQ est toujours sur ma liste de tâches ... Aussi, si je comprends bien, LINQ fonctionne uniquement sous .NET 3.5 ou supérieur. Mais ce code devrait fonctionner sur tous les types de Windows, y compris ceux qui ont .NET 2.0 – sventevit
Comment voulez-vous l'optimiser en utilisant LINQ? – Grzenio
'Process.GetProcesses(). Tout (p => p.ProcessName.Contains (processName));' ou quelque chose du genre. Et ah, je ne savais pas que vous utilisiez .NET 2! –