2010-06-25 2 views
6

가능한 숨겨진 것으로 써 타사 콘솔 응용 프로그램을 실행하는 C#에서 창 .NET 응용 프로그램을 작성하고 있습니다 (CreateNoWindow , RedirectStandardOutput 등).함수 키 누르기 (F1..F12)를 .NET의 콘솔 응용 프로그램에 보내는 방법

표준 입력을 리디렉션 했으므로 원하는 모든 문자열을 쓸 수 있지만 기능 키 또는 다른 유형의 특수 키는 문자 표현이 없으므로 쓸 수 있습니다. 나에 관해서는 F1부터 F4까지 키를 콘솔 앱에 보내야한다. 내가 찾은 해결책은 윈도우 응용 프로그램 (PostMessage, SendMessage)입니다.

내 콘솔 응용 프로그램에서 어떻게 할 수 있습니까?

프로세스 처리와 관련이 있습니까?

답변

0

Sendkeys.SendWait이 문제를 해결할 수 있습니다.

+0

SendKeys는 활성 응용 프로그램에만 키 입력을 보낼 수 있지만 여기서는 불행히도 해당되지 않습니다. – ifroz

0

SendKeys ("{F1}")? (콘솔은 활성화되어 있어야합니다).

+1

콘솔 자체가 창 (Process.CreateNoWindow)으로 존재하지 않기 때문에이 경우 SendKeys를 적용 할 수 없습니다. – ifroz

1

수 없습니다. 기능 키는 stdin에서 작동하지 않을 수 있습니다. 앱은 ReadConsoleInput()을 호출하여이를 감지 할 수 있어야합니다. 콘솔 창없이 프로세스를 시작할 때 더 이상 작동하지 않습니다.

+0

일부 데이터를 읽는 버퍼로 보낼 수있는 방법이 없습니다. – ifroz

+0

콘솔 창 없음 == 버퍼 없음. –

+0

나는이 대답을 사고 싶지 않다. CTRL-BREAK를 누르면 응용 프로그램이 종료되지만 ReadConsoleInput에 대한 호출이 없으므로 아무 것도 할 수 없습니다. 명령 콘솔에는 프로세스를 시작하고 프로세스에 중단 신호를 보낼 수있는 기능이 있기 때문에 프로세스를 시작하는 다른 응용 프로그램이 같은 종류의 신호를 보낼 수없는 이유는 알 수 없습니다. – Triynko

0

이 질문에 대한 대답은 아니지만 MSMQ 사용을 고려 했습니까?

창 응용 프로그램이 해당 키 누르기를 수신 할 수 있으면 MSMQ를 사용하여 콘솔 응용 프로그램에 그 사실을 전달할 수 있습니다. 키 누름을 실제로 지나칠 필요가 없을 수도 있습니다. 실제로 누를 수 있습니다.

나는이 techrepublic article이 MSMQ 작업의 기초를 얻는데 도움이된다는 것을 발견했다.

관련 문제