c# 윈도우즈 컨트롤 핸들 제어

spy++로 객체의 핸들 찾기

아래의 방법으로 대상 컨트롤을 트리 안에서 확인한다.

visual basic > tools > spy++ > search > find window > finder tool을 대상 컨트롤로 드래그 > 확인

핸들 액세스

스파이++로 확인한 핸들은 수시로 바뀌므로 핸들은 절대적인 위치로 액세스해야 한다. win32 api인 FindWindowAFindWindowExA를 이용한다.

[DllImport("user32")] static extern IntPtr FindWindowA(string lpClassName, string lpWindowName);
[DllImport("user32")] static extern IntPtr FindWindowExA(IntPtr hWndParent, IntPtr hWndChildAfter, string lpszClass, string lpszWindow);

제어

대상 컨트롤이 표준 윈도우즈 컨트롤이면 역시 win32 api인 SendMessage를 이용하여 제어할 수 있지만 microsoft foundation classmfc로 만든 AfxWnd~와 같은 건 될 수도 있고 안 될 수도 있다.

[DllImport("user32")] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);