예전에 사용자가 일부 단축키를 누르면 모든 응용 프로그램의 입력 필드에 선택된 텍스트를 둘러싸고있는 간단한 응용 프로그램을 유니 코드 기호로 둘러 쌌습니다. . 기본적으로 앱의 로직은 다음과 같습니다 :입력 대기열을 사용하지 않고 다른 응용 프로그램에서 클립 보드 복사/붙여 넣기 작업을 올바르게 호출하는 방법
- 글로벌 단축키 등록.
- 핫키가 실행되었습니다. 이제 클립 보드 모니터를 설정하고 클립 보드 복사를 호출하여 텍스트가 선택되었는지 확인하십시오.
- 클립 보드가 변경되어 텍스트가 포함 된 경우 해당 텍스트를 기호로 묶은 다음 클립 보드 붙여 넣기를 호출하므로 입력 필드가 수정 된 텍스트로 업데이트됩니다.
문제는 신뢰할 수있는 방법으로 다른 앱에서 복사/붙여 넣기 기능을 사용할 수 없다는 것입니다. 내가 시도한 :
- WM_COPY/WM_PASTE를 보내면 응용 프로그램에 따라 그렇지 않은 것보다 더 자주 무시됩니다.
- SendInput, keybd_event 또는 다른 키보드를 쓰는 물건을 사용하여 일반적인 클립 보드 바로 가기 키를 누르거나 언 프레스하면 사용자가 누른 키를 조작하지 못하게됩니다. 복사/붙여 넣기는 컨트롤이나 쉬프트를 사용하며 모든 일반 모든 앱의 단축키, 내 앱이 포함되어 있습니다.
- 필자가 Journal Hook을 사용하여 키보드 메시지를 시스템 입력 대기열에 직접 주입하는 경우 가끔 제대로 작동하고 이상한 글리치가 발생할 수 있습니다. 또한, 다른 응용 프로그램이 JournalHook을 자체적으로 사용하고있을 수 있으며, 이로 인해 내 앱이 엉망이 될 수 있습니다. 언급하지 않아도 기본 보안 정책은 저널을 사용하기가 어렵습니다.
- 나는 클립 보드 매직 대신 Windows UI 자동화를 사용하여 입력 필드에 텍스트를 가져 오거나 설정하려했지만 거의 작동하지 않습니다. 다른 응용 프로그램이 안정적으로 복사/붙여 넣기 기능을 사용, 또는 완전히 다른 접근 방식을 고안 할 수 있도록 다른 방법을 알고있는 경우
그래서, 난 정말 당신이 말해 감사하겠습니다 :)
이
감사합니다. 클립 보드에서 GetClipboardSequenceNumber 폴링을 사용하여 변경 사항을 테스트합니다. 클립 보드를 조작하는 것은 어렵지 않습니다. 제가이 물건을 쓴 가장 큰 이유는 입력 대기열에 간섭하는 모든 방법에 대한 해킹입니다. Ctrl + C를 다른 응용 프로그램에 쉽게 보낼 수는 있지만 사용자가 Shift + somekey를 동시에 누르면 Ctrl + C가 작동하도록 로컬 스레드 입력 대기열에서 시프트를 제거해야합니다. 대기열에 있습니다. 사용자가 실제로 이러한 작업 사이에서 Shift 키를 누르면 고정 키가 생깁니다. Journal Hook을 사용하는 주된 이유입니다. – EnoughTea