keybd_event를 사용하여 C#의 키 이벤트를 시뮬레이트하고 있습니다. 이 예에서는 Windows + D Kombination을 바탕 화면으로 보내려고합니다. 다음 코드는 버튼 클릭 기능에 포함되어keybd_event가 thread.sleep 이후에 전송됩니다.
Robot.PressKey(Keys.LWin);
Robot.PressKey(Keys.D);
Thread.Sleep(50);
Robot.ReleaseKey(Keys.D);
Robot.ReleaseKey(Keys.LWin);
Thread.Sleep(1000);
public void PressKey(Keys key)
{
keybd_event((byte)key, 0, 1, 0);
}
public void ReleaseKey(Keys key)
{
keybd_event((byte)key, 0, 1|2, 0);
}
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
내가 무엇을 기대 : 내가 바탕 화면으로 돌아가 1 초 동안 기다립니다. 결과 : 1 초 후에 바탕 화면으로 돌아갑니다.
Thread.Sleep (1000) 이후에 더 많은 함수 호출이 계속되면 데스크톱으로 절대 반환되지 않습니다. 내가 뭘 잘못하고 있니? Thx;)
EDIT : 동일한 문제가있는 SendInput (복사 붙여 넣기 복사 : http://damiproductions.darkbb.com/t504-c-sending-keys-with-the-sendinput-api)으로 시도해 보았습니다. 나는 또한 Thread.Sleep()을 Stopwatch와 Loop로 대체했다. 내 마지막 시도가 새로운 스레드에서 시작되었습니다. 이것은 에테르를 돕지 못했습니다.
이벤트에서 절전 모드를 해제하십시오(). –
데스크톱으로 돌아간 후 1 초 동안 기다리는 더 좋은 방법이 있습니까? 루프가있는 스톱워치를 시도했지만 아무 것도 바뀌지 않았습니다 – Genae
아니요, 오랫동안 반복하지 마십시오. 이제 당신은 적절한 질문을 알아, 구글. 수백 번 여기에 물었다. –