2011-02-13 3 views
0

나는 32 api에서이기는 초보자이다. 나는 화면상의 키보드를 만들기 위해 32 api를 사용하려고 노력한다. 클릭으로 창 및 구성 요소를 처리 할 수 ​​있지만 이러한 유형을 실현하는 방법과 텍스트 상자 및 편집 가능한 구성 요소에만 텍스트를 설정하려면GDI의 유형을 찾는 방법

나는 GetWindowInfo()를 사용하려고 시도하고 유형의 실현을 위해 atomWindowType을 사용하려고합니다. 이것은 OS의 각 다시 시작할 때마다 변경되기 때문에이 목표에는 충분하지 않습니다.

WINDOWINFO의 PWI = 새로운 WINDOWINFO() (클릭은 윈도우의 핸들); USER32INST.GetWindowInfo (클릭, pwi); if (pwi.atomWindowType! = -15891) {setLastclick (click); } tnx

+0

나는 이해할 수 없다고 생각하지만, 내가 가까운 경우를 대비하여 ['GetClassName'] (http://msdn.microsoft.com/en-us/library/ms633582%28v=vs.85%29 .aspx) 당신을 도울 수 있습니다 .. –

+0

텍스트 상자 및 textarae 및 콤보 같은 일부 GDI ... className을 편집하십시오. GetClassName은 full이지만 GDI에만 사용됩니다. 웹 브라우저 구성 요소와 같은 모든 장소에 대한 솔루션이 필요합니다. 편집 가능한 구성 요소의 offten 앱은 다른 클래스 이름을 사용합니다. –

+0

왜 편집 컨트롤의 유형이 중요 할 지 모르겠다. 입력 할 수있는 것이면 ... 오또, 비표준 컨트롤을 사용하는 많은 애플리케이션에서 발생하는 어려움을 볼 수 있으며 많은 애플리케이션을 언급하지는 않습니다. 컨트롤은 심지어 api와 관련하여 윈도우가 시작되지 않습니다. AAMOF 데이빗의 대답에 동의합니다. –

답변

1

당신이 원하는 것을 성취 할 수는 없을 것입니다, 현실적으로는 현실적으로 불가능합니다.

창 유형 (또는 클래스)은 기본적으로 WndProc에 의해 결정됩니다. GetClassName과 그 ilk를 사용하여 몇 가지 표준 창 클래스를 식별 할 수 있지만 이미 발견 한 것처럼 대부분의 실제 응용 프로그램은 이러한 표준 클래스를 사용하지 않습니다.

이론적으로 런타임에 WndProc 뒤에 나오는 코드를 분석 할 수 있지만 실제로는 원격으로 실행되지 않습니다.

+0

나는 다른 방법으로 자기 질문을 시도해 본다. 마이크로 소프트 스크린 키보드를보고 웹 브라우저 구성 요소에서 사용하십시오. 어떻게 그것 ????? IE에서 Google 텍스트 상자의 클래스 이름은 "Internet Explorer_server"이며 mozilla는 "MozillaWindowClass"이며 AWT (java Desktop)에서 생성 한 구성 요소의 클래스 이름은 "SunAwtFrame"입니다. ** API로 Google 검색 상자의 텍스트를 설정하는 방법은 무엇입니까? ** _ SetWindowText 및 SendMessage()는이 목표를 달성 할 수 없습니까? –

+1

대부분의 화면 키보드는 SendInput을 호출하고 입력 포커스가있는 항목으로 보내지는 위조 된 입력을 호출합니다. 적어도 그것은 나의 이해입니다. –

+0

포커스에 따라 작업하고 클릭 핸들을 제공하는 GetFocus는 파일 이름 바꾸기와 같은 안정적인 솔루션이 아닙니다. 주요 문제는 브라우저 구성 요소를 처리하고 브라우저와 같은 모든 텍스트 상자에 텍스트를 설정하는 방법입니다. –