본문 바로가기
C++ 200제/코딩 IT 정보

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

by vicddory 2018. 8. 13.

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)

댓글