본문 바로가기

언어/C#

C#에서 ImageSearch 사용하기

출처: http://blog.naver.com/134686/220944621041


첨부되어 있는 파일은 오토핫키의 imagesearch.dll 입니다.

하도 오토핫키만하다가 질리는감이 있어서 C#으로 잠깐 눈을 돌렸는데.. 이거 너무재밌네요

하나하나 찾아서 기능구현하는 재미도있고

오토핫키와 비슷한듯 다른매력. 강의가 아닌 일방적인 소스 해석코드만 적어두겠습니다.

하나하나 파헤쳐둔거라 해석하기에 어렵진않을겁니다.



System.Runtime.InteropServices; 을 추가시키고


class 안에

[DllImport("ImageSearchDLL.dll")]

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


이라고 dll임포트와 사용함수를 적어줍니다.



사용시에는


 
string[] search = UseImageSearch("*30 img\\img.png");
//UseImageSearch("*오차값 이미지파일.png"); 로 오토핫키에서의 사용법과 동일합니다.
if (search == null)
    return;  //서치실패의 경우 return

int[] search_ = new int[search.Length];
for (int j = 0; j < search.Length; j++)
{
   search_[j] = Convert.ToInt32(search[j]);
}
MessageBox.Show(search_[1]+","+search_[2]);

//함수부분. 물론 함수를 사용하지않고 다이렉트로 해도 상관없음.
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);

//이미지 서치 결과값  0번 =  결과 성공1 실패0 1,2번 = x,y 3,4번 = 이미지의 세로가로길이
//res = 한자씩 나눠져있음

    if (res[0] == '0') //res를 이용하여 이미지여부 확인
    {
        MessageBox.Show("Not found");
        return null;
    }

    String[] data = res.Split('|'); // |로 결과 값을 조각
    int x; int y;
    int.TryParse(data[1], out x); //x좌표
    int.TryParse(data[2], out y); //y좌표

    //for(int i=0; i<5; i++)
    //  MessageBox.Show(i + "번째 " + data[i]);

    return data;
}

이제는 오토핫키대신 C#을 이용해봅시다~~

퍼가든 뭘하든 상관없습니다.


ImageSearchDLL.dll

'언어 > C#' 카테고리의 다른 글

네트윅 Ping 감시용 프로그램(수천대의 네트윅 감시용으로 만듬)  (0) 2018.03.10
미로그리기 소스  (0) 2018.03.10
비활성창 매크로 만들기  (0) 2018.03.09
ZylSerialPort.NET define  (0) 2018.02.19
ini파일 다루기  (0) 2018.02.19