티스토리 뷰

목차

    반응형

    C# 윈도우 핸들 예제, 다른 프로그램에 도형 그리기 (Graphics)


    MSDN 예제를 참고하여 만든 간단한 소스입니다.


    우선 Win32 FindWindow를 사용해야 하니 InteropServices를 추가합니다.


    1
    using System.Runtime.InteropServices;
    cs


    그리고 FindWindow를 선언합니다.


    1
    2
    [DllImport("USER32.DLL", SetLastError = true)]
    public static extern uint FindWindow(string lpClassName, string lpWindowName);
    cs


    이어서 MSDN 소스를 그대로 복사하여 사용합니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    IntPtr hWnd = (IntPtr)FindWindow(null"Form1");
     
    // Create new graphics object using handle to window.
    Graphics newGraphics = Graphics.FromHwnd(hWnd);
     
    // Draw rectangle to screen.
    newGraphics.DrawRectangle(new Pen(Color.Red, 3), 00200100);
     
    // Dispose of new graphics.
    newGraphics.Dispose();
    cs


    핸들은 uint로도 많이 받는데 C#에서는 플랫폼별 형식을 맞춰줘야 하니 되도록이면 IntPtr과 마샬링을 적절히 섞는 게 좋습니다.


    4번 라인에선 FromHwnd 함수에 핸들을 인자로 넘깁니다. 핸들 값만 정확하다면 다른 윈도우폼에 도형을 그려볼 수 있죠.

    7번 라인에서 사각형을 그립니다. 10번 라인에선 생성한 Graphics 객체를 삭제하고요.


    c# 윈도우 핸들 graphics


    결과는 이렇습니다.


    마치 원격 제어라도 하듯 다른 윈폼의 핸들을 얻어 그림을 그릴 수 있네요.


    C# 윈도우 핸들 예제, 다른 프로그램에 도형 그리기 (Graphics)

    반응형