2011-12-06 1 views
3

간단한 텍스트를 음성 프로그램에 쓰고 싶습니다.C# (keyListener)에서 타이핑을 녹음하는 방법

먼저 프로그램에서 쓰여진 기호 만 재생하려고합니다. 예를 들어, 'a'를 입력하면 프로그램에서 'a'라고 말하고 싶습니다 (모두 기록했습니다). 단어를 입력하면 철자를 사용해야합니다.

그러나 저는 C# 및 .Net의 초보자이며 프로그램에서 입력 한 텍스트를 이해하는 방법을 만들지 않습니다. 예를 들어, 자바에서 keyListener 클래스가 있다고 들었지만 어느 클래스를 사용해야하는지 모릅니다. MSDN에서 보았지만 찾지 못했습니다.

입력 된 키를 수신하려면 어떤 클래스 또는 함수를 사용해야합니까?

+1

를 많이 사용하면 사용 윈폼 또는 WPF 수 있습니까? 아마 콘솔 응용 프로그램? 아니면 웹 앱? 실버 라이트? 답은 귀하의 기술 선택에 달려 있기 때문입니다. –

+0

WinForms – vato

+0

어떻게 소리를 재생 하시겠습니까? 당신이 소리를내는 모든 키가 나타나거나 타이핑이 끝나면 단어가 발음 될 것입니다. (개별 문자에 기초 함) – Moonlight

답변

5

Windows Forms를 사용하여이 작업을 수행하려고합니다. 해결책은 매우 간단합니다. 이러한 이벤트에는 MouseDown, MouseUp, MouseMove, MouseEnter, MouseLeave, MouseHover, KeyPress, KeyDown 및 KeyUp이 포함됩니다. 각 컨트롤에는 이러한 이벤트가 노출되어 있습니다. 구독하기 만하면됩니다.

완전한 단어가 입력되었는지의 여부를 논리의 조금 찾을 수있을 것입니다이 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown.aspx

를 참조하십시오. 간단한 공간은 공간이 눌려지면 단어가 완성되었다고 가정 할 수 있습니다. 사용자가 잘못된 철자를 입력하고 백 스페이스를 치고 철자를 수정하기를 원하기 때문에 매우 조잡한 논리입니다. 지연을 추가 할 수 있습니다.

+0

감사합니다. 제가 이것이 정확히 무엇을 찾고 있었는지 생각합니다. :) – vato

0

텍스트 상자가있는 Windows Form을 만듭니다. KeyPress 이벤트 처리 - 사용자가 입력 한 실제 문자를 제공합니다. KeyDown 및 KeyUp은 도움이되지 않습니다.

KeyChar 속성을 확인해야합니다.

void MyEventHandler(object sender, KeyPressEventArgs e) { 
    // Do stuff depending on the value of e.KeyChar 
} 
0
private void button1_Click_1(object sender, EventArgs e) 
    { 
     string word = textBox1.Text; 
     foreach (char i in word) 
     { 
      switch (i) 
      { 
       case 'a': 
       case 'A': { // play sound a 

        break; 
       } 
       default: 
        { 
         // play no sound 
         break; 
        } 
      } 
     } 
    } 
4

여기에 다른 모든 C#을 개발자와 같은 비주얼 스튜디오를 사용하는 경우가 더 자세한 코드의 예는 다음과 같습니다 : 이것처럼

  1. 윈도우-양식을 작성하고 [디자인]로 이동 .
  2. 해당 속성 (RMB => 속성)을 선택하고 이벤트에 변경에서 KeyDown
  3. VS가 생성됩니다
  4. 더블 클릭 LMB와
  5. 는 KeyEventArgs이 값에 따라 처리를위한 이벤트를 바인딩합니다.

예 :

private void NewDialog_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.KeyData) 
     { 
      case Keys.A: 
       { 
        MethodToOutputSound(AEnum); 
        break; 
       } 
      case Keys.B: 
       { 
        MethodToOutputSound(BEnum); 
        break; 
       } 
      case Keys.F11: 
       { 
        DifferentMethod(); 
        break; 
       } 
      case Keys.Escape: 
       { 
        this.Close(); 
        break; 
       } 
      default: 
       { 
        break; 
       } 
     } 
} 

또는 IF를

private void NewDialog_KeyDown(object sender, KeyEventArgs e) 
{ 
     if(e.KeyData == Keys.A) 
     { 
      MethodToOutputSound(AEnum); 
     } 

     if(e.KeyData == Keys.B) 
     { 
      MethodToOutputSound(BEnum); 
     } 
     ... 
} 
관련 문제