c# 윈도우즈 컨트롤 핸들 제어
spy++로 객체의 핸들 찾기
아래의 방법으로 대상 컨트롤을 트리 안에서 확인한다.
visual basic > tools > spy++ > search > find window > finder tool을 대상 컨트롤로 드래그 > 확인
핸들 액세스
스파이++로 확인한 핸들은 수시로 바뀌므로 핸들은 절대적인 위치로 액세스해야 한다. win32 api인 FindWindowA와 FindWindowExA를 이용한다.
[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);