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

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

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

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

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

textual
Листинг программы
  1. using System;
  2. using System.Windows.Forms;
  3. using System.Runtime.InteropServices;
  4. using System.Diagnostics;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Collections.Generic;
  8.  
  9. namespace WindowsFormsOPEN
  10. {
  11.     public static class WinAPI
  12.     {
  13.         [DllImport("user32.dll", SetLastError = true)]
  14.         public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
  15.  
  16.         [DllImport("user32.dll", SetLastError = true)]
  17.         public static extern IntPtr GetWindow(IntPtr HWnd, GetWindow_Cmd cmd);
  18.  
  19.         [DllImport("user32.dll", CharSet = CharSet.Auto)]
  20.         public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, [Out] StringBuilder lParam);
  21.  
  22.         public enum GetWindow_Cmd : uint
  23.         {
  24.             GW_HWNDFIRST = 0,
  25.             GW_HWNDLAST = 1,
  26.             GW_HWNDNEXT = 2,
  27.             GW_HWNDPREV = 3,
  28.             GW_OWNER = 4,
  29.             GW_CHILD = 5,
  30.             GW_ENABLEDPOPUP = 6,
  31.             WM_GETTEXT = 0x000D
  32.         }
  33.     }
  34.     public partial class Form1 : Form
  35.     {
  36.         public Form1()
  37.         {
  38.             InitializeComponent();
  39.         }
  40.  
  41.         private void button1_Click(object sender, EventArgs e)
  42.         {
  43.             IntPtr ptr = WinAPI.FindWindow(null, "AntiPlagiarism.NET");
  44.             if (ptr.ToInt32() != 0)
  45.             {
  46.                 IntPtr child = WinAPI.GetWindow(ptr, WinAPI.GetWindow_Cmd.GW_CHILD);
  47.                 MessageBox.Show(child.ToString());
  48.             }
  49.         }
  50.     }
  51. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут