C# с использованием ImageSearch от AutoIt - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь использовать эту DLL из AutoIt с C# (ImageSearch)

DLL для обнаружения данного изображения на экране

Это мой код:

[DllImport("ImageSearchDLL.dll")]
private static extern IntPtr ImageSearch(int x, int y, int right, int bottom, [MarshalAs(UnmanagedType.LPStr)]string imagePath);

public static String[] UseImageSearch(string imgPath)
{
    int right = Screen.PrimaryScreen.WorkingArea.Right;
    int bottom = Screen.PrimaryScreen.WorkingArea.Bottom;

    IntPtr result = ImageSearch(0, 0, right, bottom, imgPath);
    String res = Marshal.PtrToStringAnsi(result);

    if (res[0] == '0') return null;//not found

    String[] data = res.Split('|');
    //0->found, 1->x, 2->y, 3->image width, 4->image height;        

    // Then, you can parse it to get x and y:
    int x; int y;
    int.TryParse(data[1], out x);
    int.TryParse(data[2], out y);

    return data;
}

Итак, я получаю System.BadImageFormatException при вызове функции ImageSearch в этой строке:

IntPtr result = ImageSearch(0, 0, right, bottom, imgPath);

Есть идеи? Большое спасибо

1 Ответ

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

Вы получаете System.BadImageFormatException, потому что передаете ноль для первого аргумента, это должно быть имя файла изображения.

Пример использования:

ImageSearch('checkImage.bmp', 0, 100, 500, 0)

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