C# Найдите изображение на экране и нажмите на него - PullRequest
0 голосов
/ 09 апреля 2020

Мне интересно, могу ли я обнаружить изображение на экране (указать c Изображение) и щелкнуть по нему в режиме реального времени (я даю изображение перед его активацией, и оно щелкает по нему)

Я хотел бы знать, как это сделать на C#, но оценили и другие языки.

Ответы [ 3 ]

0 голосов
/ 09 апреля 2020

C#:

Если бы я сказал об этом go, я бы использовал функцию, которая получает цвет в определенном пикселе и сопоставляет его с цветом изображения. Вот как вы можете сделать это в C#:

[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr GetWindowDC(IntPtr window);
[DllImport("gdi32.dll", SetLastError = true)]
public static extern uint GetPixel(IntPtr dc, int x, int y);
[DllImport("user32.dll", SetLastError = true)]
public static extern int ReleaseDC(IntPtr window, IntPtr dc);

public static Color GetColorAt(int x, int y) {
    IntPtr desk = GetDesktopWindow();
    IntPtr dc = GetWindowDC(desk);
    int a = (int)GetPixel(dc, x, y);
    ReleaseDC(desk, dc);
    return Color.FromArgb(255, (a >> 0) & 0xff, (a >> 8) & 0xff, (a >> 16) & 0xff);
}

Тогда вы можете легко получить пиксельный цвет в любом месте, вызвав Console.WriteLine(GetColorAt(x, y));. Если вы имеете в виду изображение, вы можете использовать этот метод, чтобы отобразить, какие цвета l ie внутри изображения, а затем просто создать for l oop для сканирования всего экрана, пока он не совпадет с этим цветом / массивом цветов. , Найдя изображение, вы можете создать событие клика, например, Автоматический кликер C#.

0 голосов
/ 09 апреля 2020

Java:

Если используется Java, я сделал один из них раньше. По сути, вы хотите выяснить, какие цвета находятся внутри выбранного изображения, и ввести его в код, чтобы он мог его искать.

Чтобы получить цвет пикселя в местоположении, используйте:

Robot robot = new Robot();
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
BufferedImage capture = robot.createScreenCapture(screenRect);

int rgb = capture.getRGB(x, y); // Get colors of screen

// Convert int to specific colors
int red = (rgb >> 16) & 0xFF;
int green = (rgb >> 8) & 0xFF;
int blue = (rgb) & 0xFF;

Затем вы можете поместить это в функцию if, чтобы определить, соответствует ли цвет тому, который вы ищете:

if (red == whateverRedYouWant && green == whateverGreenYouWant && blue == whateverBlueYouWant) {
    robot.mouseMove(x, y); // Move mouse to that position
    robot.setAutoDelay(250);

    // Click the mouse
    robot.mousePress(KeyEvent.BUTTON1_MASK);
    robot.mouseRelease(KeyEvent.BUTTON1_MASK);
}

Обратите внимание, что если вы не знаете, там, где может быть изображение, вам нужно, чтобы for l oop сканировал весь экран, проверяя каждый пиксель на предварительно определенный цвет / массив цветов, которые вы нашли на изображении.

0 голосов
/ 09 апреля 2020

Полагаю, этого можно добиться с помощью basi c javascript. Если вы знаете, какое изображение вы хотите нажать на оформлении заказа: https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById

Cheers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...