В C# можно реализовать клик без перемещения курсора в неактивном окне программы путем использования методов из пространства имен User32.dll.
Для начала нам понадобится подключить пространство имен System.Runtime.InteropServices, чтобы иметь доступ к функционалу User32.dll. Далее нам понадобятся следующие методы: FindWindow, SetForegroundWindow и SendMessage.
1. FindWindow используется для поиска окна приложения по его заголовку или имени класса.
2. SetForegroundWindow используется для установки окна приложения на передний план.
3. SendMessage используется для отправки сообщения мыши в окно.
Ниже показан пример реализации функции для выполнения клика без перемещения курсора в неактивном окне:
using System; using System.Runtime.InteropServices; public class MouseClicker { private const int WM_LBUTTONDOWN = 0x201; private const int WM_LBUTTONUP = 0x202; [DllImport("user32.dll")] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); public static void Click(string windowTitle) { // Находим окно по его заголовку IntPtr windowHandle = FindWindow(null, windowTitle); if (windowHandle == IntPtr.Zero) { Console.WriteLine("Окно не найдено"); return; } // Переводим окно в фокус SetForegroundWindow(windowHandle); // Отправляем сообщение мыши в окно SendMessage(windowHandle, WM_LBUTTONDOWN, IntPtr.Zero, IntPtr.Zero); SendMessage(windowHandle, WM_LBUTTONUP, IntPtr.Zero, IntPtr.Zero); } }
Пример использования:
string windowTitle = "Название окна программы"; MouseClicker.Click(windowTitle);
В данном примере функция Click выполняет клик на окно программы с указанным в параметре windowTitle заголовком. Если окно не найдено, выводится сообщение об этом.
Однако следует отметить, что такие действия могут нарушать безопасность и являются не желательными. Этот метод может не работать с некоторыми приложениями или в разных операционных системах. Используйте его с осторожностью, учитывая контекст и требования безопасности вашего приложения.