티스토리 뷰
목차
반응형
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), 0, 0, 200, 100); // Dispose of new graphics. newGraphics.Dispose(); | cs |
핸들은 uint로도 많이 받는데 C#에서는 플랫폼별 형식을 맞춰줘야 하니 되도록이면 IntPtr과 마샬링을 적절히 섞는 게 좋습니다.
4번 라인에선 FromHwnd 함수에 핸들을 인자로 넘깁니다. 핸들 값만 정확하다면 다른 윈도우폼에 도형을 그려볼 수 있죠.
7번 라인에서 사각형을 그립니다. 10번 라인에선 생성한 Graphics 객체를 삭제하고요.
결과는 이렇습니다.
마치 원격 제어라도 하듯 다른 윈폼의 핸들을 얻어 그림을 그릴 수 있네요.
C# 윈도우 핸들 예제, 다른 프로그램에 도형 그리기 (Graphics)
반응형