2014-07-27 2 views
3

키보드 키 입력 (예 : CAPS + (A/B/C/....))을 복사하여 C# 많은 다른 클립 보드.Windows 클립 보드를 사용하여 여러 개의 사용자 지정 클립 보드 프로그래밍 - 몇 가지 복잡 함

우선 Ctrl + V와 같은 역할을하는 Windows 메소드를 찾아 보았습니다. 전체 문자열을 직접 붙여 넣습니다. 나 또한 SendInputs를 "붙여 넣기 (paste)"하려고했는데, 너무 오랜 시간이 걸리는 잘못된 생각이었다. 내가 물건을 찾지 못해서 Windows Clipboard를 사용하기로 결정했습니다.

시나리오는 (내가 CAPS + A를 수행 할 때)

  • 캐시 클립 보드의 내용이 CTRL + C
  • 시뮬레이션 나중에
  • 를 검색 클립 보드의 콘텐츠를하고 변수를 설정하는 것입니다 'A'키에 해당
  • 클립 보드를 기본 캐시 된 값으로 설정합니다.

메모장에있을 때 잘 작동합니다. 하려면 Ctrl + C가 다른 응용 프로그램에서 실행되는 경우하지만 3 단계에서 CLIPBRD_E_CANT_OPEN 예외를 얻을

내 질문 (정확히 5 초 동안, 클립 보드 내 응용 프로그램에서 액세스 할 수 없습니다) : - 윈도우를 보낼 수있는 방법이 있나요 윈도우 클립 보드를 사용하지 않고 CTRL + V와 같은 기능을하는 특정 텍스트를 "붙이기"위한 신호? - 클립 보드가 5 초 내에 강제로 내 애플리케이션으로 돌아갈 수 있습니까? - 더 똑똑한 시나리오가 없습니까?

감사합니다.

+0

시뮬레이션 키 입력은 전적으로 * 잘못된 방식입니다. 이것은 심각하게 큰 사업이지만, 당신이 아직 과제를 다하는 것 같지 않습니다. C#으로 직접 작성하는 대신 기존의 오픈 소스 (또는 상업용) 패키지를보고 싶을 수도 있습니다. 나는 그것을 직접 시도한 적이 없지만 [Ditto] (http://sourceforge.net/projects/ditto-cp/)는 체크 아웃 할 수있는 클립 보드 관리자처럼 보입니다. –

답변

0

키를 차단하기 위해 한 번 봐 모두의 앞에 :

[DllImport("user32.dll")] 
public static extern int GetAsyncKeyState(long vKey); 

VK_CONTROL = 0x11을
VK_SHIFT = 0x10을
C 키 = 0x43부터

기능 반환 정수 값> 0 경우 키를 누르면