SendKeys SendKeys SendKeys SendKeys Class

정의

애플리케이션에 대한 키 입력 메서드를 제공합니다.Provides methods for sending keystrokes to an application.

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

예제

다음 코드 예제에서는 Send 메서드를 사용하는 방법을 보여 줍니다.The following code example demonstrates how to use the Send method. 예제를 실행 하려면 다음 코드를 붙여 넣습니다. Form1 이라는 형태로 Button1 이라는 단추가 들어 있는입니다.To run the example, paste the following code in a form called Form1 containing a button called Button1. 이 예제에서 해당 이벤트 처리 메서드를 사용 하 여 연결 클릭 이벤트를 확인 합니다.Ensure the click events are associated with their event-handling methods in this example. 단추 컨트롤의 TabIndex 속성을 0으로 설정 해야 합니다.The button control's TabIndex property should be set to 0. 예제를 실행 하는 경우 폼 트리거할 단추 클릭을 두 번 클릭 이벤트입니다.When the example is running, double-click the form to trigger the button's click event.

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 키 입력을 보내고 활성 애플리케이션 조합을 키 입력 합니다.Use SendKeys to send keystrokes and keystroke combinations to the active application. 이 클래스는 인스턴스화할 수 없습니다.This class cannot be instantiated. 클래스에 키 입력을 전달 하 고 프로그램의 흐름을 사용 하 여 즉시 계속 하려면 Send합니다.To send a keystroke to a class and immediately continue with the flow of your program, use Send. 키 입력으로 시작 하는 모든 프로세스에 대 한 대기를 사용 하 여 SendWait입니다.To wait for any processes started by the keystroke, use SendWait.

각 키는 하나 이상의 문자로 표현 됩니다.Each key is represented by one or more characters. 단일 키보드 문자를 지정 하려면 문자 자체를 사용 합니다.To specify a single keyboard character, use the character itself. 예를 들어 "A" 문자열에서 문자 A을 나타내기 위해 메서드에 전달 합니다.For example, to represent the letter A, pass in the string "A" to the method. 둘 이상의 문자를 나타내기를 앞에 각 추가 문자를 추가 합니다.To represent more than one character, append each additional character to the one preceding it. 문자 A, B 및 C을 나타내기 위해 "ABC"와 매개 변수를 지정 합니다.To represent the letters A, B, and C, specify the parameter as "ABC".

더하기 기호 (+), 캐럿 (^), 백분율 기호 (%), 물결표 (~) 및 괄호 ()을 특별 한 의미를 갖습니다 SendKeys합니다.The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses () have special meanings to SendKeys. 이러한 문자 중 하나를 지정 하려면 중괄호 안에 묶습니다 ({}).To specify one of these characters, enclose it within braces ({}). 예를 들어 더하기 기호를 지정 하려면 "{+}"를 사용 합니다.For example, to specify the plus sign, use "{+}". 중괄호 문자를 지정 하려면 사용 하 여 "{{}"및"{}}".To specify brace characters, use "{{}" and "{}}". 대괄호 () 없는 특별 한 의미가 SendKeys, 있지만 중괄호로 묶어야 합니다.Brackets ([ ]) have no special meaning to SendKeys, but you must enclose them in braces. 다른 애플리케이션에서 대괄호 수행 특별 한 의미가 동적 데이터 교환 DDE ()가 발생할 때 상당히 클 수 있습니다.In other applications, brackets do have a special meaning that might be significant when dynamic data exchange (DDE) occurs.

주의

다양한 키보드를 통해 전 세계에서 사용하기 위한 애플리케이션인 경우 Send 를 사용하면 예기치 않은 결과가 발생할 수 있으며 피해야 합니다.If your application is intended for international use with a variety of keyboards, the use of Send could yield unpredictable results and should be avoided.

ENTER 또는 탭 문자 대신 작업을 나타내는 키 등의 키를 누를 때 표시 되지 않는 문자를 지정 하려면 다음 표에 코드를 사용 합니다.To specify characters that aren't displayed when you press a key, such as ENTER or TAB, and keys that represent actions rather than characters, use the codes in the following table.

Key 코드Code
백스페이스BACKSPACE {백스페이스}, {B} 또는 {BKSP}{BACKSPACE}, {BS}, or {BKSP}
중단BREAK {중단}{BREAK}
CAPS LOCKCAPS LOCK {CAPSLOCK}{CAPSLOCK}
DEL 또는 삭제DEL or DELETE {삭제} 또는 {삭제}{DELETE} or {DEL}
아래쪽 화살표DOWN ARROW {를}{DOWN}
EndEND {END}{END}
Enter 키ENTER {0} 입력} 또는 ~{ENTER} or ~
Esc 키ESC {ESC}{ESC}
도움말HELP {도움말}{HELP}
HOME {0} 홈}{HOME}
기능 또는 삽입INS or INSERT {삽입} 또는 {기능}{INSERT} or {INS}
왼쪽 화살표LEFT ARROW {LEFT}{LEFT}
NUM LOCKNUM LOCK {NUMLOCK}{NUMLOCK}
Page DownPAGE DOWN {PGDN}{PGDN}
Page UpPAGE UP {PGUP}{PGUP}
PRINT SCREENPRINT SCREEN {PRTSC} (사용 하도록 예약){PRTSC} (reserved for future use)
오른쪽 화살표RIGHT ARROW {RIGHT}{RIGHT}
스크롤 잠금SCROLL LOCK {SCROLLLOCK}{SCROLLLOCK}
TabTAB {TAB}{TAB}
위쪽 화살표UP ARROW {UP}{UP}
F1F1 {F1}{F1}
F2F2 {F2}{F2}
F3F3 {F3}{F3}
F4F4 {F4}{F4}
F5F5 {F5}{F5}
F6F6 {F6}{F6}
F7F7 {F7}{F7}
F8F8 {F8}{F8}
F9F9 {F9}{F9}
F10F10 {F10}{F10}
F11F11 {F11}{F11}
F12F12 {F12}{F12}
F13F13 {F13}{F13}
F14F14 {F14}{F14}
F15F15 {F15}{F15}
F16F16 {F16}{F16}
키패드 추가Keypad add {0} 추가}{ADD}
키패드 빼기Keypad subtract {빼기}{SUBTRACT}
키패드 곱하기Keypad multiply {곱하기}{MULTIPLY}
키패드 나누기Keypad divide {나누기}{DIVIDE}

SHIFT, CTRL 및 ALT 키 조합을 사용 하 여 결합 된 키를 지정 하려면 하나 이상의 다음 코드를 사용 하 여 키 코드 앞에 야 합니다.To specify keys combined with any combination of the SHIFT, CTRL, and ALT keys, precede the key code with one or more of the following codes.

KeyKey 코드Code
SHIFTSHIFT +
CTRLCTRL ^
ALTALT %

SHIFT, CTRL 및 alt 키 조합을 다른 여러 키를 누르면 동안 보관 해야를 지정 하려면 해당 키에 대 한 코드를 괄호로 묶어야 합니다.To specify that any combination of SHIFT, CTRL, and ALT should be held down while several other keys are pressed, enclose the code for those keys in parentheses. Shift 키를 누른 상태 E 및 C를 누르면를 지정 하려면 사용 예를 들어, "+ (EC)".For example, to specify to hold down SHIFT while E and C are pressed, use "+(EC)". Shift 키를 누른 뒤에, shift 키 없이 C, E를 누른 상태를 지정 하려면 "+ EC"입니다.To specify to hold down SHIFT while E is pressed, followed by C without SHIFT, use "+EC".

반복 되는 키를 지정 하려면 형식을 {키 number 개를} 사용 합니다.To specify repeating keys, use the form {key number}. 키와 숫자 사이 공백을 넣어야 합니다.You must put a space between key and number. 예를 들어 {왼쪽 42} 의미 42 번씩; 왼쪽 화살표 키를 눌러 {h 10} 키를 눌러 H 10 시간을 의미 합니다.For example, {LEFT 42} means press the LEFT ARROW key 42 times; {h 10} means press H 10 times.

참고

다른 애플리케이션을 활성화 하려면 관리 되는 메서드가 없습니다 이기 때문에 현재 애플리케이션 내에서이 클래스를 사용 하거나 같은 네이티브 Windows 메서드를 사용 하 여 FindWindowSetForegroundWindow, 다른 애플리케이션에 포커스를 둡니다.Because there is no managed method to activate another application, you can either use this class within the current application or use native Windows methods, such as FindWindow and SetForegroundWindow, to force focus on other applications.

참고

SendKeys 클래스는 Windows Vista에서 실행되는 애플리케이션에서 사용할 수 있도록 .NET Framework 3.0에서 업데이트되었습니다.The SendKeys class has been updated for the .NET Framework 3.0 to enable its use in applications that run on Windows Vista. Windows Vista의 향상된 보안(사용자 계정 컨트롤 또는 UAC라고 함) 때문에 이전 구현이 예상대로 작동하지 않습니다.The enhanced security of Windows Vista (known as User Account Control or UAC) prevents the previous implementation from working as expected.

SendKeys 클래스는 타이밍 문제에 취약하며, 이를 해결하기 위해 일부 개발자가 노력해야 했습니다.The SendKeys class is susceptible to timing issues, which some developers have had to work around. 업데이트된 구현도 타이밍 문제에 취약하지만 약간 더 빠르며 해결 방법에 대한 변경이 필요할 수도 있습니다.The updated implementation is still susceptible to timing issues, but is slightly faster and may require changes to the workarounds. SendKeys 클래스는 먼저 이전 구현을 사용하려고 시도하며, 실패할 경우 새 구현을 사용합니다.The SendKeys class tries to use the previous implementation first, and if that fails, uses the new implementation. 따라서 SendKeys 클래스는 운영 체제마다 다르게 동작할 수 있습니다.As a result, the SendKeys class may behave differently on different operating systems. 또한 SendKeys 클래스가 새 구현을 사용하는 경우 SendWait 메서드는 다른 프로세스로 전송된 메시지가 처리될 때까지 기다리지 않습니다.Additionally, when the SendKeys class uses the new implementation, the SendWait method will not wait for messages to be processed when they are sent to another process.

애플리케이션이 운영 체제와 관계없이 일관된 동작에 의존하는 경우 app.config 파일에 다음 애플리케이션 설정을 추가하여 SendKeys 클래스에서 새 구현을 사용하도록 강제할 수 있습니다.If your application relies on consistent behavior regardless of the operating system, you can force the SendKeys class to use the new implementation by adding the following application setting to your app.config file.

<appSettings>

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

</appSettings>

SendKeys 클래스에서 이전 구현을 사용하도록 강제하려면 "JournalHook" 값을 대신 사용합니다.To force the SendKeys class to use the previous implementation, use the value "JournalHook" instead.

메서드

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Flush() Flush() Flush() Flush()

현재 메시지 큐에 있는 모든 Windows 메시지를 처리합니다.Processes all the Windows messages currently in the message queue.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
Send(String) Send(String) Send(String) Send(String)

키 입력을 활성 애플리케이션에 보냅니다.Sends keystrokes to the active application.

SendWait(String) SendWait(String) SendWait(String) SendWait(String)

지정한 키를 활성 애플리케이션에 보낸 다음 메시지가 처리되기를 기다립니다.Sends the given keys to the active application, and then waits for the messages to be processed.

ToString() ToString() ToString() ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

적용 대상