프로그래밍/.NET2012. 7. 26. 12:41

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
Posted by 건깡