2014-09-09 6 views
0

내가 선택하면 다른 창으로 포커스를주고 바로 가기를 보낼 수있는 목록에서 옵션을 선택할 수있는 어플리케이션이 있습니다 (예 : 포커스 Chrome, 보내기 Ctrl + 3은 세 번째 탭으로 이동).컨트롤 키가 눌러져있는 동안 다른 어플리케이션으로 바로 가기 (sendkeys) 보내기

잘되었지만 단축키를 사용하여 내 (예 : Ctrl + 3) 내의 목록에서 옵션을 신속하게 선택할 수 있습니다.

사용자가 내 앱에서 바로 가기를 사용하는 경우 Ctrl 키가 전체적으로 다운되며 다른 응용 프로그램에 바로 가기를 보내면 Ctrl 키가 다운되는 문제가 있습니다.

Ctrl것을 윈도우를 알 수있는 방법이 있나요 (나는 또한 AltWin 키를 사용하여 다른 응용 프로그램에 대한 바로 가기를 보낼 수 있습니다, 그래서 내 응용 프로그램과 대상 응용 프로그램 모두에서 동일한 제어 키를 사용하여 옵션을 선택하지 않습니다) 아니 SendKeys를 사용할 때, 바로 가기가 다른 응용 프로그램에서 작동하도록? 이것을 성취하기위한 다른 방법이 있습니까?

private const int KEYEVENTF_EXTENDEDKEY = 1; 
private const int KEYEVENTF_KEYUP = 2; 

[DllImport("user32.dll")] 
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); 

public void SendCtrl3() 
{ 
    keybd_event(0xA2, 0, KEYEVENTF_EXTENDEDKEY, 0); 
    keybd_event(0x33, 0, KEYEVENTF_EXTENDEDKEY, 0); 
    keybd_event(0x33, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); 
    keybd_event(0xA2, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); 
} 
+0

Hmya, 이것은 Ctrl 키와 단지 문제가되지 않습니다. 사용자가 * any * 키를 누르면 이것은 잘못됩니다. 그의 입력은 완전히 예측할 수없는 방식으로 임의로 혼합됩니다. 확실히 키보드 입력으로 프로그램을 자동화하려고하는 핵심 이유는 실패한 고래입니다. 말하자면 텍스트를 직접 텍스트 상자에 찔러 넣을 수있는 UI 자동화 라이브러리로이를 향상시켜야합니다. –

+0

맞습니다. 문제는 내 앱의 바로 가기가 다른 앱의 바로 가기를 실행하는 것입니다. 안타깝게도 SendKeys를 사용하지 않고 탭을 전환하거나 Win + S를 사용하지 않고 Windows Search 매력을 열려면 Chrome, Firefox 및 Notepad ++ 용 API를 찾을 수는 없지만 UI 자동화에 뭔가가있을 수 있습니다. 탭에서 "클릭"할 수 있다면 적어도 내 유스 케이스를 해결할 것입니다 ... –

답변

0

키가 물리적으로 다운되면, 그것은 너무 다른 애플 리케이션을 만들 수있는 방법이없는 것입니다 것으로 보인다 : 여기

내가 사용하고 코드 (C#을)의 단순화 된 예입니다 그 열쇠를 아래로 보아라.

가장 좋은 대안은 UI 자동화를 사용하는 것입니다.

http://msdn.microsoft.com/en-us/library/ms747327(v=vs.110).aspx