API함수
FindWindow(string lpClassName, string lpWindowName)
가장 최상위의 핸들을 찾는 함수.
인자값 - 찾을 클래스이름, 찾을 캡션값
프로그램의 최상위 핸들 값만 리턴
FindWindowEX(int hWnd1, int hWnd2, string lpsz1, string lpsz2)
자식 핸들을 찾는 함수
인자값 - 부모핸들값, 0 or null, 찾을 클래스명, 찾을 캡션명
Spy++
캡션명과 클래스이름을 확인할 수 있는 프로그램
C# 소스
using System; using System.Collections.Generic; using System.Linq; using System.Text; // 외부 라이브러리 사용하기 위해 선언 using System.Runtime.InteropServices; namespace HandleSearch { class Program { // 외부 라이브러리 선언 // extern : 메서드가 C# 코드 외부에서 구현 [DllImport("user32.dll")] public static extern int FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll")] public static extern int FindWindowEx(int hWnd1, int hWnd2, string lpsz1, string lpsz2); // STA : Single Threaded Apartment // 최초 애플리케이션 스레드의 모델을 단일 스레드로 지정. // 컴포넌트 오브젝트 모델과 상호 운용하기 위해 필요. // <-> MTAThread [STAThread] static void Main(string[] args) { Console.WriteLine("알캡처의 핸들값?"); Console.WriteLine("캡션값만 입력한 핸들값 : " + FindWindow(null, "알캡처").ToString()); Console.WriteLine("클래스명만 입력한 핸들값 : " + FindWindow("AlCapture_ScreenCaptureWnd", null).ToString()); int AlCapHw = FindWindow(null, "알캡처"); int AlCap_NewCap = FindWindowEx(AlCapHw, 0, "Button", "새 캡처"); Console.WriteLine("압캡처 핸들값 : " + AlCapHw.ToString()); Console.WriteLine("알캡처_새캡처 핸들값: " + AlCap_NewCap.ToString()); } } }
실행결과
'프로그래밍 > .NET' 카테고리의 다른 글
DB 연결(오라클 10g) (0) | 2012.07.30 |
---|---|
프로그램 제어(핸들값 이용) (0) | 2012.07.26 |
Alert창 (0) | 2012.07.25 |
이미지 크기 변환 (0) | 2011.10.07 |
수평, 수직 히스토그램 (0) | 2011.10.07 |