Нажатие на кнопку в чужом приложении - 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());
}
}
}
}