2013-03-10 4 views
2

유니버셜 텍스트 자동 완성 기 애플리케이션을 C#으로 처리하고 있습니다. 그래서 현재 활성 창 (메모장, MS 워드 등)에서 캐럿 위치를 가져와야합니다. 캐럿의 X, Y 좌표를 얻으려면 어떻게해야합니까? 사용자가 입력하는 동안 커서 (캐럿) 아래에 추천을 표시해야합니다.캐럿 위치/위치 모든 애플리케이션 내

내 프로그램이 백그라운드에서 실행 중입니다. 현재 활성 상태 인 윈도우에서 캐럿 존재를 감지하고 캐럿의 실시간 위치를 얻어야합니다. 사용자가 텍스트를 입력 할 때마다 위치 값이 업데이트되어야합니다.

나는이 모든 작업을 수행하는 방법을 모른다. 이 모든 것이 C#을 사용하여 가능합니까? 아니면 프로그래밍 언어를 변경해야합니까?

+0

여기에 다른 문제가 있습니다. 1. [활성 응용 프로그램 가져 오기] (http://stackoverflow.com/questions/2483537/is-it-possible-to-the-name-of-current-active-application) 2. [커서 좌표 가져 오기] (http://stackoverflow.com/questions/1316681/getting-mouse-position-in-c-sharp) 나는 이것이 당신의 목표에 더 가까이 다가 가기를 바랍니다. –

답변

0

언어 선택은이 문제와 관련이 없습니다. 텍스트 입력 자체가 어렵습니다.

응용 프로그램에서 자주 텍스트를 편집하기 위해 사용자 지정되거나 많이 사용자 지정된 컨트롤을 사용하기 때문에 문제를 해결하는 것이 어려워 질 것입니다. 메모장에서는 표준 편집 컨트롤을 사용하므로 EM_GETSEL 메시지를 사용하여 문자의 캐럿 위치를 검색하고 EM_POSFROMCHAR을 사용하여 화면 위치로 변환 할 수 있습니다. 유사한 Rich Edit 컨트롤에 대한 메시지가 있습니다. 그러나 Microsoft Word에서는 COM을 사용하여 호출하고 캐럿 위치를 찾아야 할 것입니다. 다른 응용 프로그램에는 다른 API가 있습니다.이 API는 연구, 리버스 엔지니어링, 지원 및 테스트가 필요합니다. 그리고 이것은 시작에 불과합니다. 캐럿 주변의 텍스트를 가져 와서 수정하거나 사용자에게 선택 사항을 제공하는 UI를 표시하려고합니다. 주요 PITA가 될 것이므로 IME API를 살펴보고 거기에 적합한 것이 있는지 확인하십시오. 동아시아 입력 모드는 일종의 자동 완성 기능이기 때문에 있어야합니다. IME의 장점은 대상 컨트롤에 의존하지 않는다는 것입니다.

관련 문제