Отправить сообщение в другое текстовое приложение - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь отправить сообщения из одного приложения в другое приложение.

Я думаю, что Код работает отлично и это не проблема, но текст отправляется в неправильное текстовое поле? Я посмотрел с помощью Spy ++, и у меня есть два текстовых поля в приложении 2, но для обоих текстовых полей я возвращаю один и тот же класс из Spy ++ ---> "WindowsForms10.EDIT.app.0.141b42a_r13_ad1" ...

Мой главный вопрос: почему оба текстовых поля имеют один и тот же «класс» и как я могу это исправить? ТНХ

    private const int WM_SETTEXT = 0x000C;
    [DllImport("user32.dll")]
    private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
    [DllImport("User32.dll")]
    private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindows);
    [DllImport("User32.dll")]
    private static extern Int32 SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, StringBuilder lParam);

    private void button4_Click(object sender, EventArgs e)
    {
        IntPtr hWnd = FindWindow(null, "Form1");
        if (!hWnd.Equals(IntPtr.Zero))
        {
            IntPtr edithWnd = FindWindowEx(hWnd, IntPtr.Zero, "WindowsForms10.EDIT.app.0.141b42a_r13_ad1", null);
            if (!edithWnd.Equals(IntPtr.Zero))
            SendMessage(edithWnd, WM_SETTEXT, IntPtr.Zero, new StringBuilder("Hello World!"));
        }
    }

// Рабочие материалы ...

            IntPtr edithWnd = FindWindowEx(hWnd, IntPtr.Zero, "WindowsForms10.EDIT.app.0.141b42a_r12_ad1", null);
            IntPtr nextHnd = edithWnd;
            IntPtr editWnd = FindWindowEx(hWnd, nextHnd, "WindowsForms10.EDIT.app.0.141b42a_r12_ad1", null);
            IntPtr nextHnd1 = editWnd;
            IntPtr editWnd1 = FindWindowEx(hWnd, nextHnd1, "WindowsForms10.EDIT.app.0.141b42a_r12_ad1", null);
            IntPtr nextHnd2 = editWnd1;
            IntPtr editWnd2 = FindWindowEx(hWnd, nextHnd2, "WindowsForms10.EDIT.app.0.141b42a_r12_ad1", null);
...