팁 1 : 창 핸들을 얻는 방법

팁 1 : 창 핸들을 얻는 방법


Windows의 사용자 인터페이스 개념은 다음과 같은 개념을 기반으로합니다. 창문들. 대화 상자, 버튼, 제어판, 목록 -이 모든 것 창문들. 따라서 자신 또는 다른 사람의 응용 프로그램 인터페이스의 요소를 사용하여 작업을 수행하려면 기술자 창문들.



창 핸들을 얻는 방법


너는 필요할거야.



  • - 플랫폼 SDK 패키지.
  • - 컴파일러.


지침


1


가져 오기 기술자 창문들그것을 창조한다. API 함수 인 CreateWindow 또는 CreateWindowEx를 호출하거나, 작업의 기능을 캡슐화하는 데 사용 된 프레임 워크 또는 라이브러리의 클래스 중 적절한 래퍼 메소드 (필수 객체)를 호출하십시오. 창문들CreateWindow 및 CreateWindowEx 함수는 직접 반환합니다. 기술자 창문들 성공적으로 생성 된 경우. 그들이 전화를 실패하면 반환 값은 NULL입니다. 오류 코드의 원인은을 GetLastError API-기능을 사용하여 조회 할 수 있습니다. // MSDN : 프로토 타입 및 CreateWindow 함수와 CreateWindowEx 함수 함수의 매개 변수에 대한 자세한 설명은 http://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx 및 HTTP 링크를 클릭 .microsoft.com을 / EN-US / 라이브러리 / 창 / 바탕 화면 / ms632680 % 28V = VS.85 % 29.aspx 다른 프레임 워크 (호출하여) 명시 적으로 중 발생할 수있는 운영 체제 클래스 개체 만들기 창을 사용 .If 및 암시 (RAII 구현 전략). 그러므로, 기술자 창문들 준비된 초기화 된 객체에서 수신하는 것이 좋습니다. 클래스 반환 방법 정보 기술자 창문들객체로 캡슐화 된 경우 해당 프레임 워크의 설명서에서 확인할 수 있습니다. 예를 들어, MFC의 경우, CWnd 클래스의 GetSafeHwnd와 유사한 메소드가 있습니다.


2


가져 오기 기술자 창문들 그것을 검색하여. FindWindow 및 FindWindowEx API 함수 또는 해당 프레임 워크의 클래스 개체에 해당하는 래퍼 메서드를 사용하십시오 .FindWindow 함수는 기술자 창문들 발견되면 최상위 레벨 또는 실패시 NULL입니다. 검색은 클래스 이름과 제목으로 이루어집니다. 창문들. 함수의 매개 변수와 측면에 대한 설명링크 http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx .Semantika 일 함수를 FindWindow FindWindowEx가 검색을 생산하는 유일한 차이와 유사하다입니다 자식 창. FindWindowEx 문서에 대한 http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx 링크에 의해 주어진.


3


찾기 기술자 창문들 그들의 집합을 열거하는 과정에서. EnumWindows, EnumChildWindows, EnumThreadWindows API 함수 또는 사용 된 프레임 워크의 클래스 개체 메서드를 사용하십시오 .EnumWindows 및 EnumChildWindows 함수 목록 창문들 최상위 및 하위 창문들 각각. EnumThreadWindows는 자식이 아닌 모든 자식을 열거합니다. 창문들 지정된 스트림의 이러한 각 함수는 콜백 프로 시저에 대한 포인터를 전달해야하며, 콜백 프로 시저는 작업 과정에서 전송됩니다. 기술자열거 함수를 결합하여 콜백 프로 시저에서 윈도우의 속성을 가져 와서 분석하면 찾을 수 있습니다. 기술자 필요한 창문들. 설명 된 기능에 대한 설명서는에서 제공됩니다.링크 : - EnumWindows : http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx - EnumChildWindows : http://msdn.microsoft.com/ EN-US / 라이브러리 / 창 / 바탕 화면 / ms633494 % 28V = VS.85 % 29.aspx - EnumThreadWindows : http://msdn.microsoft.com/en-us/library/windows/desktop/ms633495%28v=vs 0.85 %의 29.aspx.


4


가져 오기 기술자 창문들 알려진 좌표에서. 함수 WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx 반환 값 기술자windowsFromPoint 함수는 가장 사용하기 쉽지만 반환하지는 않습니다. 기술자숨겨진 창과 비활성화 된 창. 해당 응용 프로그램 문서의 링크가 http://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx .Funktsii ChildWindowFromPoint 및 ChildWindowFromPointEx을 찾을 수 기술자지정된 부모의 자식 창문들, 주어진 지점에 속한다. 따라서 ChildWindowFromPointEx 동작 유연 추가적인 파라미터를 이용하여 제어 될 수있다. 이러한 기능에 대한 문서가 링크를 제공한다 : - ChildWindowFromPoint : http://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx - ChildWindowFromPointEx : HTTP : // msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.



팁 2 : 핸들 인식 방법


기술자 창 또는 핸들 창 - 특정운영 체제가 창을 생성하는 동안 창에 발행하는 식별자입니다. 어떤 이유에서 (예를 들어, 응용 프로그램을 작성할 때) 윈도우의 시스템 설명자를 알아야하는 경우 HWND 프로그램을 사용하여 수행 할 수 있습니다.



핸들 인식 방법


너는 필요할거야.



  • - HWND 프로그램.


지침


1


검색 엔진을 통해이 애플리케이션 찾기인터넷에서 다운로드하여 컴퓨터에 다운로드하십시오. 이 프로그램은 프로그래머 Pavel Lesnikov가 개발 한 무료 응용 프로그램입니다. 프로그램과 함께 압축 파일을 풀기 전에 다운로드 한 데이터를 바이러스 백신 소프트웨어로 확인하십시오. 프로그램으로 압축 파일의 압축을 풉니 다. WHD.exe 파일을 두 번 클릭하여 유틸리티를 실행하십시오. 프로그램 창에는 간단한 인터페이스가 있습니다 : 컨트롤과 설명자를 표시하는 필드. 아카이버가 없다면 Win Rar라는 프로그램을 인터넷에서 다운로드하십시오.


2


스위치를 "From the커서 "를 누르고 키보드의 CapsLock을 누릅니다. 이 작업 후에는 마우스 커서가 통과하는 모든 창에 대한 식별자가 설명자의 출력 필드에 자동으로 표시됩니다. 이 절차를 비활성화하려면 CapsLock을 다시 클릭하십시오. 설명자를 알고 자하는 창의 클래스를 입력하십시오.


3


"확인"버튼을 클릭하면 아래 필드가 나타납니다.검색 ID. 프로그램 창을 닫으려면 오른쪽 상단의 십자가를 클릭하십시오. 프로그램 개발자에게 연락하려면 http://vokinsel.dviger.com으로 이동하십시오. 실시간으로 조언을 구할 수있을뿐 아니라 새로운 버전의 소프트웨어가 있는지 여부도 알 수 있습니다.


4


이 유틸리티는 설치가 필요하지 않고 매우 유용합니다.사용하기 쉽다. 이 방법으로 얻은 창 식별자는 나중에 다른 응용 프로그램에서 Windows 서비스 창 및 실행중인 프로그램의 창에 액세스하는 데 사용될 수 있습니다. 이 프로그램을 사용하는 방법을 모른다면 도움말을 읽으십시오. 일반적으로 개발자는 프로그램 작업의 기본 원칙을 설명합니다.




팁 3 : 핸들을 얻는 방법


응용 프로그래밍 인터페이스Windows 제품군의 운영 체제는 일련의 기능으로 표현됩니다. 호출 될 때 다양한 개체 (파일, 프로세스, 스레드, 동기화 개체 등)를 만들 수 있습니다. 이러한 개체에 대한 상당히 추상적이고 통일 된 액세스를 보장하기 위해 설명자는 "개인적이지 않은"숫자 값을 사용하여 식별됩니다.



핸들을 얻는 방법


너는 필요할거야.



  • - Windows API를 사용할 수있는 프로그래밍 언어의 번역자.
  • - 아마 Windows Platform SDK.


지침


1


윈도우 기술자를 가져옵니다. 이것은 많은 방법으로 할 수 있습니다. 특정 메서드는 최종 목표에 따라 달라지며 CreateWindow 또는 CreateWindowEx API를 사용하여 창을 만듭니다. 성공하면 설명자를, 실패 할 경우 NULL을 반환합니다. FindWindow 및 FindWindowEx 함수를 사용하여 다양한 매개 변수로 최상위 창과 하위 창을 검색합니다. 검색이 성공하면 창 설명자가 수신됩니다. EnumWindows, EnumChildWindows, EnumThreadWindows 함수로 창을 열거하십시오. 발견 된 윈도우의 디스크립터는 콜백 함수의 매개 변수로 전달되며 화면의 특정 위치에있는 윈도우의 핸들을 찾습니다. WindowFromPoint, ChildWindowFromPoint 또는 ChildWindowFromPointEx 중 하나를 호출하십시오.


2


프로세스 설명자를 얻습니다. 이 API 기능 CreateProcess를,에 CreateProcessAsUser, CreateProcessWithTokenW 또는 CreateProcessWithLogonW를 호출하여 새로운 프로세스를 생성합니다. 그들은 모두 필드 hProcess PROCESS_INFORMATION 형 구조에서 새로운 프로세스에 대한 핸들을 반환 포인터는 그들에게 자신의 잘 알려진 식별자의 마지막 parametrom.Naydite 프로세스 핸들을 전달되어야합니다있다. OpenProcess에 전화를 사용합니다. 모든 실행중인 프로세스 ID는 GetCurrentProcess 함수를 사용 위해 CreateToolhelp32Snapshot 함수를 사용하여, 예를 들면, 얻어진 현재의 프로세스 Process32First Process32Next 라이브러리 도구 Help.Izvlekite 의사 설명 될 수있다.


3


thread 기술자를 취득합니다. CreateThread 및 CreateRemoteThread 함수는 자체 및 다른 프로세스에서 각각 설명자를 반환하는 스레드를 만듭니다. 해당 식별자를 사용하여 기존 설명자를받은 스트림을 열려면 OpenThread 함수를 사용하면됩니다. GetCurrentThread가 호출되면 현재 흐름의 의사 설명자가 반환됩니다.


4


파일, 디렉토리, 물리적 디스크립터디스크, 볼륨, 콘솔, 통신 리소스 (I / O 포트), 메일 슬롯 및 명명 된 파이프는 단일 함수 인 CreateFile을 호출하여 얻을 수 있습니다.


5


CreateFileMapping 및 OpenFileMapping을 호출 할 때 파일 표시 객체에 대한 파일 설명자가 반환됩니다.


6


CreateMutex, CreateSemaphore 및CreateEvent가 생성되고 OpenMutex, OpenSemaphore 및 OpenEvent 함수는 기존 동기화 객체 (뮤텍스, 세마포 및 이벤트)를 엽니 다. 그들 모두는 설명자를 반환합니다.


7


모든 GDI 개체 조작 (예 :글꼴, 브러쉬, 연필, 하드웨어 종속 및 독립 래스터, DIB 섹션 등)는 설명자를 통해 생성됩니다. GDI 개체를 생성하는 함수는 다양하며 MSDN에 대한 정보를 얻으려면 MSDN의 해당 섹션을 참조해야합니다.


8


한 프로세스에서 얻은 설명자.규칙은 다른 규칙에서 사용할 수 없습니다. 그러나 어떤 경우에는 기본 객체에 해당하는 설명자 - 복제본을 얻을 수 있습니다. DuplicateHandle API 함수를 호출하여 중복 설명자를 구현합니다. 예를 들어 여러 프로세스에서 이름이없는 동기화 객체 또는 채널을 동시에 사용하도록 구현할 수 있습니다.