Нажатие на кнопку в чужом приложении - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Мне нужно нажать на кнопку в чужом приложении и вставить текст в поле. Через Spy++ я получаю название окна и обращаюсь к нему через FindWindow, но как обратиться к самой кнопке и текстовому полю?

Решение задачи: «Нажатие на кнопку в чужом приложении»

textual
Листинг программы
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Drawing;
using System.Text;
using System.Collections.Generic;
 
namespace WindowsFormsOPEN
{
    public static class WinAPI
    {
        [DllImport("user32.dll", SetLastError = true)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
        [DllImport("user32.dll", SetLastError = true)]
        public static extern IntPtr GetWindow(IntPtr HWnd, GetWindow_Cmd cmd);
 
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, [Out] StringBuilder lParam);
 
        public enum GetWindow_Cmd : uint
        {
            GW_HWNDFIRST = 0,
            GW_HWNDLAST = 1,
            GW_HWNDNEXT = 2,
            GW_HWNDPREV = 3,
            GW_OWNER = 4,
            GW_CHILD = 5,
            GW_ENABLEDPOPUP = 6,
            WM_GETTEXT = 0x000D
        }
    }
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            IntPtr ptr = WinAPI.FindWindow(null, "AntiPlagiarism.NET");
            if (ptr.ToInt32() != 0)
            {
                IntPtr child = WinAPI.GetWindow(ptr, WinAPI.GetWindow_Cmd.GW_CHILD);
                MessageBox.Show(child.ToString());
            }
        }
    }
}

Оцени полезность:

7   голосов , оценка 3.571 из 5