매크로

조회 수 579 추천 0 댓글 4

처음 써보는 글이라 이 탭이 맞는지 잘 모르겠네요.


PrintWindow를 이용해 해당 창의 이미지를 가져오는 예제입니다.


[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);


[StructLayout(LayoutKind.Sequential)]
        public struct RECT
        {
            private int _Left;
            private int _Top;
            private int _Right;
            private int _Bottom;

            public RECT(RECT Rectangle) : this(Rectangle.Left, Rectangle.Top, Rectangle.Right, Rectangle.Bottom)
            {
            }
            public RECT(int Left, int Top, int Right, int Bottom)
            {
                _Left = Left;
                _Top = Top;
                _Right = Right;
                _Bottom = Bottom;
            }

            public int X
            {
                get { return _Left; }
                set { _Left = value; }
            }
            public int Y
            {
                get { return _Top; }
                set { _Top = value; }
            }
            public int Left
            {
                get { return _Left; }
                set { _Left = value; }
            }
            public int Top
            {
                get { return _Top; }
                set { _Top = value; }
            }
            public int Right
            {
                get { return _Right; }
                set { _Right = value; }
            }
            public int Bottom
            {
                get { return _Bottom; }
                set { _Bottom = value; }
            }
            public int Height
            {
                get { return _Bottom - _Top; }
                set { _Bottom = value + _Top; }
            }
            public int Width
            {
                get { return _Right - _Left; }
                set { _Right = value + _Left; }
            }
            public Point Location
            {
                get { return new Point(Left, Top); }
                set
                {
                    _Left = value.X;
                    _Top = value.Y;
                }
            }
            public Size Size
            {
                get { return new Size(Width, Height); }
                set
                {
                    _Right = value.Width + _Left;
                    _Bottom = value.Height + _Top;
                }
            }

            public static implicit operator Rectangle(RECT Rectangle)
            {
                return new Rectangle(Rectangle.Left, Rectangle.Top, Rectangle.Width, Rectangle.Height);
            }
            public static implicit operator RECT(Rectangle Rectangle)
            {
                return new RECT(Rectangle.Left, Rectangle.Top, Rectangle.Right, Rectangle.Bottom);
            }
            public static bool operator ==(RECT Rectangle1, RECT Rectangle2)
            {
                return Rectangle1.Equals(Rectangle2);
            }
            public static bool operator !=(RECT Rectangle1, RECT Rectangle2)
            {
                return !Rectangle1.Equals(Rectangle2);
            }

            public override string ToString()
            {
                return "{Left: " + _Left + "; " + "Top: " + _Top + "; Right: " + _Right + "; Bottom: " + _Bottom + "}";
            }

            public override int GetHashCode()
            {
                return ToString().GetHashCode();
            }

            public bool Equals(RECT Rectangle)
            {
                return Rectangle.Left == _Left && Rectangle.Top == _Top && Rectangle.Right == _Right && Rectangle.Bottom == _Bottom;
            }

            public override bool Equals(object Object)
            {
                if (Object is RECT)
                {
                    return Equals((RECT)Object);
                }
                else if (Object is Rectangle)
                {
                    return Equals(new RECT((Rectangle)Object));
                }

                return false;
            }
        }

        public static Bitmap PrintWindow(string procName)
        {
            RECT rc;
            var proc = Process.GetProcessesByName(procName)[0];
            GetWindowRect(proc.MainWindowHandle, out rc);

            Bitmap bmp = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb);
            Graphics gfxBmp = Graphics.FromImage(bmp);
            IntPtr hdcBitmap = gfxBmp.GetHdc();

            PrintWindow(proc.MainWindowHandle, hdcBitmap, 0);

            gfxBmp.ReleaseHdc(hdcBitmap);
            gfxBmp.Dispose();

            return bmp;
        }


소스코드를 여기에 붙여넣으려니 들여쓰기가 엉망이 됐군요


사용 방법은 PrintWindow("프로세스 이름"); 형식 입니다. 물론 반환 형식은 Bitmap 입니다.



  • Windhelm 2017.06.26 02:49

    아 그리고 참고로 using System.Runtime.InteropServices;를 참조 해 주셔야 DllImport에서 에러가 나지 않습니다.


    해당 예제를 이용해 비활성 매크로를 만들 수 있지요.

  • 일러트릿 2017.06.28 00:05

    쉽지는 않네요 ㅠㅜ

  • 이정균 2017.07.04 16:21

    와ㅏㅏㅏㅏ공부해보고싶은데 이런글보면 너무 복잡하네요 ....

  • Windhelm 2017.07.08 20:35
    막상 해보면 크게 어렵지는 않아요 ㅎㅎ

    책 한권 사서 직접 해보는게 최고

List of Articles
분류 제목 글쓴이 최근변경 추천
자유 외부 커뮤니티로의 유입 광고 글에 대해 피카부 2023.10.19 0/0
자유 글이 베스트로 이동될 시 권한 부여 피카부 2021.06.07 0/0
자유 추천 금지를 권유/유도하는 행위는 제재 됩니다 피카부 2020.01.15 0/0
자유 이메일로 공유 요청하는 계정 제재 피카부 2018.09.14 0/0
자유 이곳은 매크로 장터가 아닙니다. 구매/판매 글 제재 피카부 2019.02.19 0/0
자유 운영 방해 목적의 매크로 관련 글 제재 피카부 2019.09.03 0/0
자유 테일스타 회원 레벨 정보 이용하기 피카부 2022.02.17 0/0
자유 외부 유료 매크로의 추천 유도 및 광고 추천 제재 피카부 2018.04.25 0/0
자유 매크로는 [공유] 분류를 지정해주세요 피카부 2022.02.17 0/0
정보 매크로 1004 장비,몹확인창 없애기 14 헤헤몰라 2015.05.14 0/0
정보 몬스터길들이기 1.4.6 보스대전 5 평강온달 2014.10.09 0/0
정보 팀뷰어 사용하는 분 소소한 팁입니다. 5 유후후숫 2015.04.26 0/0
정보 몬길 매크로를 이용한 세나매크로 방법 6 써니이드 2015.04.26 0/0
정보 컴으로 매크로 돌릴때 엄청난 팁팁팁!(중복가능성 있음) 11 keiosl 2015.02.24 0/0
정보 매크로 시작 눌렀을때.. 일시정지 되는거 안나오게 하... 4 야이노마 2015.01.19 0/0
정보 지니모션 사용 시 drag and drop(드래그 앤 드랍) 안되... 1 아필레르 2015.01.06 0/0
정보 모든메크로 막혀도 이메크로 안막힌것 22 akfls 2015.12.16 0/0
정보 블레이드 Blame 매크로가 1.10으로 업데이트 되었습니다. 20 Blame 2016.01.01 0/0
정보 별이되어라 sss레이드 입니다 7 선지해장국 2015.03.21 0/0
정보 모바게 님 께서 올리신 오토핫키 사용법 간단히 다시 ... 3 몽몽잉잉 2015.01.12 0/0
정보 미라클매클 구입하고 사용못하시는분들 보세요~(블루스... 1 시크한훈 2015.07.06 0/0
정보 렙 1이 쓸수 있는 매크로 추천해드려요~(몬길, 별되) 28 네오위 2015.05.14 0/0
정보 루팅 후 프랩 모비즌 우회법 [몬길] 13 위스키 2015.10.28 0/0
정보 이미지 캡쳐하시는분 편리한프로그램 하나 소개해드립... 3 뎅뎅 2015.05.31 0/0
정보 완전한사랑 매크로사용시 오류먹는경우. 5 쏭투덜 2015.02.14 0/0
정보 폰매클) 폰매클 나쁘지 않아요 ㅎㅎ 27 용이7 2015.04.26 0/0
정보 [레이븐][1080x1920, 1280x720] 다기능 매크로 v1.2 12 멜랑 2015.05.02 0/0
정보 [몬길][MAC][재뽑] 맥 사용자를 위한 몬길 매크로가 돌... 3 오나중 2015.04.02 0/0
정보 레이븐 매크로 적용기 2 난나요여 2015.06.10 0/0
Board Pagination Prev 1 23456 7 Next
/ 7

전체 최신 인기글

전체 주간 인기글