다음을 통해 공유


SendKeys 클래스

정의

애플리케이션에 대한 키 입력 메서드를 제공합니다.

public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
상속
SendKeys

예제

다음 코드 예제에서는 Send 메서드를 사용하는 방법을 보여 줍니다. 예제를 실행 하려면 다음 코드를 붙여 넣습니다. Form1 이라는 형태로 Button1 이라는 단추가 들어 있는입니다. 이 예제에서 해당 이벤트 처리 메서드를 사용 하 여 연결 클릭 이벤트를 확인 합니다. 단추 컨트롤의 TabIndex 속성을 0으로 설정 해야 합니다. 예제를 실행 하는 경우 폼 트리거할 단추 클릭을 두 번 클릭 이벤트입니다.

private:
   // Clicking Button1 causes a message box to appear.
   void Button1_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      MessageBox::Show( "Click here!" );
   }

   // Use the SendKeys.Send method to raise the Button1 click event 
   // and display the message box.
   void Form1_DoubleClick( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      
      // Send the enter key; since the tab stop of Button1 is 0, this
      // will trigger the click event.
      SendKeys::Send( "{ENTER}" );
   }

// Clicking Button1 causes a message box to appear.
private void Button1_Click(System.Object sender, System.EventArgs e)
{
    MessageBox.Show("Click here!");
}

// Use the SendKeys.Send method to raise the Button1 click event 
// and display the message box.
private void Form1_DoubleClick(object sender, System.EventArgs e)
{

    // Send the enter key; since the tab stop of Button1 is 0, this
    // will trigger the click event.
    SendKeys.Send("{ENTER}");
}

' Clicking Button1 causes a message box to appear.
Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
    MessageBox.Show("Click here!")
End Sub


' Use the SendKeys.Send method to raise the Button1 click event 
' and display the message box.
Private Sub Form1_DoubleClick(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.DoubleClick

    ' Send the enter key; since the tab stop of Button1 is 0, this
    ' will trigger the click event.
    SendKeys.Send("{ENTER}")
End Sub

설명

사용 하 여 SendKeys 키 입력을 보내고 활성 애플리케이션 조합을 키 입력 합니다. 이 클래스는 인스턴스화할 수 없습니다. 클래스에 키 입력을 전달 하 고 프로그램의 흐름을 사용 하 여 즉시 계속 하려면 Send합니다. 키 입력으로 시작 하는 모든 프로세스에 대 한 대기를 사용 하 여 SendWait입니다.

각 키는 하나 이상의 문자로 표현 됩니다. 단일 키보드 문자를 지정 하려면 문자 자체를 사용 합니다. 예를 들어 "A" 문자열에서 문자 A을 나타내기 위해 메서드에 전달 합니다. 둘 이상의 문자를 나타내기를 앞에 각 추가 문자를 추가 합니다. 문자 A, B 및 C을 나타내기 위해 "ABC"와 매개 변수를 지정 합니다.

더하기 기호 (+), 캐럿 (^), 백분율 기호 (%), 물결표 (~) 및 괄호 ()을 특별 한 의미를 갖습니다 SendKeys합니다. 이러한 문자 중 하나를 지정 하려면 중괄호 안에 묶습니다 ({}). 예를 들어 더하기 기호를 지정 하려면 "{+}"를 사용 합니다. 중괄호 문자를 지정 하려면 사용 하 여 "{{}"및"{}}". 대괄호 () 없는 특별 한 의미가 SendKeys, 있지만 중괄호로 묶어야 합니다. 다른 애플리케이션에서 대괄호 수행 특별 한 의미가 동적 데이터 교환 DDE ()가 발생할 때 상당히 클 수 있습니다.

주의

다양한 키보드를 통해 전 세계에서 사용하기 위한 애플리케이션인 경우 Send 를 사용하면 예기치 않은 결과가 발생할 수 있으며 피해야 합니다.

ENTER 또는 탭 문자 대신 작업을 나타내는 키 등의 키를 누를 때 표시 되지 않는 문자를 지정 하려면 다음 표에 코드를 사용 합니다.

코드
Backspace {백스페이스}, {B} 또는 {BKSP}
BREAK {중단}
CAPS LOCK {CAPSLOCK}
DEL 또는 삭제 {삭제} 또는 {삭제}
아래쪽 화살표 {를}
End {END}
Enter 키 {0} 입력} 또는 ~
ESC 키 {ESC}
HELP {도움말}
Home {0} 홈}
기능 또는 삽입 {삽입} 또는 {기능}
왼쪽 화살표 {LEFT}
NUM LOCK {NUMLOCK}
Page Down {PGDN}
Page Up {PGUP}
PRINT SCREEN {PRTSC} (사용 하도록 예약)
오른쪽 화살표 {RIGHT}
스크롤 잠금 {SCROLLLOCK}
Tab {TAB}
위쪽 화살표 {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
키패드 추가 {0} 추가}
키패드 빼기 {빼기}
키패드 곱하기 {곱하기}
키패드 나누기 {나누기}

SHIFT, CTRL 및 ALT 키 조합을 사용 하 여 결합 된 키를 지정 하려면 하나 이상의 다음 코드를 사용 하 여 키 코드 앞에 야 합니다.

코드
SHIFT +
CTRL ^
Alt %

SHIFT, CTRL 및 alt 키 조합을 다른 여러 키를 누르면 동안 보관 해야를 지정 하려면 해당 키에 대 한 코드를 괄호로 묶어야 합니다. Shift 키를 누른 상태 E 및 C를 누르면를 지정 하려면 사용 예를 들어, "+ (EC)". Shift 키를 누른 뒤에, shift 키 없이 C, E를 누른 상태를 지정 하려면 "+ EC"입니다.

반복 되는 키를 지정 하려면 형식을 {키 number 개를} 사용 합니다. 키와 숫자 사이 공백을 넣어야 합니다. 예를 들어 {왼쪽 42} 의미 42 번씩; 왼쪽 화살표 키를 눌러 {h 10} 키를 눌러 H 10 시간을 의미 합니다.

참고

다른 애플리케이션을 활성화 하려면 관리 되는 메서드가 없습니다 이기 때문에 현재 애플리케이션 내에서이 클래스를 사용 하거나 같은 네이티브 Windows 메서드를 사용 하 여 FindWindowSetForegroundWindow, 다른 애플리케이션에 포커스를 둡니다.

참고

SendKeys 클래스는 Windows Vista에서 실행되는 애플리케이션에서 사용할 수 있도록 .NET Framework 3.0에서 업데이트되었습니다. Windows Vista의 향상된 보안(사용자 계정 컨트롤 또는 UAC라고 함) 때문에 이전 구현이 예상대로 작동하지 않습니다.

SendKeys 클래스는 타이밍 문제에 취약하며, 이를 해결하기 위해 일부 개발자가 노력해야 했습니다. 업데이트된 구현도 타이밍 문제에 취약하지만 약간 더 빠르며 해결 방법에 대한 변경이 필요할 수도 있습니다. SendKeys 클래스는 먼저 이전 구현을 사용하려고 시도하며, 실패할 경우 새 구현을 사용합니다. 따라서 SendKeys 클래스는 운영 체제마다 다르게 동작할 수 있습니다. 또한 SendKeys 클래스가 새 구현을 사용하는 경우 SendWait 메서드는 다른 프로세스로 전송된 메시지가 처리될 때까지 기다리지 않습니다.

애플리케이션이 운영 체제와 관계없이 일관된 동작에 의존하는 경우 app.config 파일에 다음 애플리케이션 설정을 추가하여 SendKeys 클래스에서 새 구현을 사용하도록 강제할 수 있습니다.

<appSettings>

<add key="SendKeys" value="SendInput"/>

</appSettings>

SendKeys 클래스에서 이전 구현을 사용하도록 강제하려면 "JournalHook" 값을 대신 사용합니다.

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
Flush()

현재 메시지 큐에 있는 모든 Windows 메시지를 처리합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
Send(String)

키 입력을 활성 애플리케이션에 보냅니다.

SendWait(String)

지정한 키를 활성 애플리케이션에 보낸 다음 메시지가 처리되기를 기다립니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상