2010-11-28 4 views
2

Windows 셸에서 F2 키를 눌러 파일 이름을 편집하면 이해할 수있는 제한된 편집 키 집합이 있습니다. CTRL + 화살표 키, Home, End, CTRL + X. 예를 들어, CTRL + 오른쪽 화살표를 입력하면 대시 다음에 커서가 멈추지 만 한 마디에는 멈추지 않습니다. 이러한 작업을 맞춤 설정할 수 있습니까? 그렇다면 어떻게해야합니까?어떤 Windows API가 파일 이름 편집을 제어합니까?

직접 관련이 없지만 주제에 도움이 될 것으로 생각되는 추가 정보도 제공해 주시면 감사하겠습니다.

+0

무엇을하고 싶습니까? – tenfour

+0

왜 이것을 사용자 정의 하시겠습니까? 특정 행동으로 인해 발생할 수있는 일에 대해 합리적인 기대를 가지고있는 사용자는 무엇이 잘못 되었습니까? 그것은 직관적 인 사용자 상호 작용 이론의 기본입니다. –

+0

마침표로 단어를 구분하는 특정 파일 이름이 있습니다. 편집 모드 (즉, F2/이름 바꾸기 중)에서 CTRL + 오른쪽 화살표를 수행하는 문자열을 탐색 할 때 커서가이 기간에 중단되기를 원합니다. – Sabuncu

답변

5

EM_SETWORDBREAKPROC을 사용하여 편집 컨트롤에 대한 사용자 지정 단어 분리 절차를 설정할 수 있습니다. EditWordBreakProc은 단어 분리가 발생하는 위치를 찾아야 할 때 OS가 호출하는 해당 콜백 함수입니다. 워드 프로세서

:

여러 줄 또는 사용자 프레스는 다음 단어 또는 이전에 캐럿을 이동하려면 Ctrl 키와 함께 화살표 키를 때이 함수를 호출 할 수있는 한 줄 편집 컨트롤 중 하나 워드.

키 조합 자체는 직접 정의 할 수 없으며 좋은 이유가 있습니다. 따라서 사용자 경험이 모든 응용 프로그램에서 동일합니다. 물론 편집 컨트롤을 서브 클래 싱하여 키보드 메시지를 직접 처리 할 수는 있지만 여기서 그 점은 중요하지 않다고 생각합니다.

+0

정말 고마워요. – Sabuncu

+0

편집 컨트롤이 아닙니다. –

+0

@ 한자 Passant : 어떻게되지 않습니까? ['ListView_EditLabel'] (http://msdn.microsoft.com/en-us/library/bb761238%28v=VS.85%29.aspx)는 목록 항목의 내부 편집을 시작하고 편집에 대한 핸들을 반환합니다 제어. – casablanca

2

Windows 버전은 중요하지만 일반적으로이 동작은 기본 목록보기 컨트롤 인 SysListView32로 구워집니다. 아니요, 키보드 처리가 어렵습니다. 컨트롤을 서브 클래 싱하는 것은 기술적으로 가능합니다. 익스플로러 (Explorer.exe) 안에 있기 때문에 실용적이지 않습니다. 라벨 안에 caret가 어디에 있는지 알 수 없으므로 메시지가 없습니다.

+0

한스 고맙습니다. – Sabuncu

2

"Windows Shell"Windows 탐색기를 의미하는 것으로 가정하지만, 어떤 프로그램에 대해서도 대답은 동일 할 것입니다.

탐색기는 EDIT 컨트롤을 만들고 위치로 옮깁니다. 편집 동작은이 스톡 시스템 컨트롤과 Explorer에서 자체 인스턴스에 추가하는 모든 추가 로직에 따라 달라집니다.

자신의 프로세스에 속한 스레드에 속한 EDIT 컨트롤의 동작을 쉽게 변경할 수 있지만 다른 프로세스에서 그렇게하려면 전역 후크가 필요합니다. 전역 후크를 올바르게 수행하고 x86 및 x64 환경에서 모두 작동하는 작업량을 이해했음을 명시합니다.

WH_CALLWNDPROC를 사용하는 다른 프로세스에서 EDIT 컨트롤의 동작을 직접적으로 방해 할 수는 없지만 WH_CALLWNDPROCRET을 사용하여 키보드 메시지를 관찰하고 창과 EDIT 컨트롤을 확인하고 EDIT 컨트롤이 Explorer에 속하는지 확인하고 그런 다음 EDIT 컨트롤이 키보드 이벤트에 어떻게 반응했는지 정확하게 알면 그 기간까지 백업하는 것과 같은 추가 작업을 수행하십시오.

혹시 WH_CBT 훅을 사용하여 HCBT_CREATEWND를 모니터링하고 EDIT 컨트롤이 생성 될 때마다 서브 클래스화할 수 있습니다.

노력이 도움이되지 않을 수도 있습니다.

+0

감사합니다! 예, 몇 가지 프로그래밍 승/후크/서브 클래 싱, 모두 매우 까다로운 것을 알고있다. 다시 감사합니다. – Sabuncu

관련 문제