<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_%ED%86%A0%EA%B8%80%EC%83%81%ED%83%9C_%EC%B2%B4%ED%81%AC_%EC%99%80_%ED%95%B4%EC%A0%9C%EB%B0%A9%EB%B2%95</id>
	<title>Autoit 토글상태 체크 와 해제방법 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_%ED%86%A0%EA%B8%80%EC%83%81%ED%83%9C_%EC%B2%B4%ED%81%AC_%EC%99%80_%ED%95%B4%EC%A0%9C%EB%B0%A9%EB%B2%95"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_%ED%86%A0%EA%B8%80%EC%83%81%ED%83%9C_%EC%B2%B4%ED%81%AC_%EC%99%80_%ED%95%B4%EC%A0%9C%EB%B0%A9%EB%B2%95&amp;action=history"/>
	<updated>2026-07-01T23:06:04Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=Autoit_%ED%86%A0%EA%B8%80%EC%83%81%ED%83%9C_%EC%B2%B4%ED%81%AC_%EC%99%80_%ED%95%B4%EC%A0%9C%EB%B0%A9%EB%B2%95&amp;diff=2167&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: == Autoit 토글상태 체크 와 해제방법 == * AutoIt에서 Send(&quot;^c&quot;) 실행 후 컨트롤 키가 토글되어 계속 눌린 상태가 될 때, 이 상태를 감지하고 토글을 해제하는 몇 가지 방법이 있습니다.  * AutoIt 자체에는 컨트롤 키의 현재 &quot;토글&quot; 상태를 직접 감지하는 내장 함수는 없지만, 우회적인 방법들을 사용할 수 있습니다. === Send(&quot;{LControl Up}&quot;) 또는 Send(&quot;{RControl Up}&quot;) 강제 실행 === # 가...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_%ED%86%A0%EA%B8%80%EC%83%81%ED%83%9C_%EC%B2%B4%ED%81%AC_%EC%99%80_%ED%95%B4%EC%A0%9C%EB%B0%A9%EB%B2%95&amp;diff=2167&amp;oldid=prev"/>
		<updated>2025-07-21T17:05:33Z</updated>

		<summary type="html">&lt;p&gt;새 문서: == Autoit 토글상태 체크 와 해제방법 == * AutoIt에서 Send(&amp;quot;^c&amp;quot;) 실행 후 컨트롤 키가 토글되어 계속 눌린 상태가 될 때, 이 상태를 감지하고 토글을 해제하는 몇 가지 방법이 있습니다.  * AutoIt 자체에는 컨트롤 키의 현재 &amp;quot;토글&amp;quot; 상태를 직접 감지하는 내장 함수는 없지만, 우회적인 방법들을 사용할 수 있습니다. === Send(&amp;quot;{LControl Up}&amp;quot;) 또는 Send(&amp;quot;{RControl Up}&amp;quot;) 강제 실행 === # 가...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Autoit 토글상태 체크 와 해제방법 ==&lt;br /&gt;
* AutoIt에서 Send(&amp;quot;^c&amp;quot;) 실행 후 컨트롤 키가 토글되어 계속 눌린 상태가 될 때, 이 상태를 감지하고 토글을 해제하는 몇 가지 방법이 있습니다. &lt;br /&gt;
* AutoIt 자체에는 컨트롤 키의 현재 &amp;quot;토글&amp;quot; 상태를 직접 감지하는 내장 함수는 없지만, 우회적인 방법들을 사용할 수 있습니다.&lt;br /&gt;
=== Send(&amp;quot;{LControl Up}&amp;quot;) 또는 Send(&amp;quot;{RControl Up}&amp;quot;) 강제 실행 ===&lt;br /&gt;
# 가장 간단하고 직접적인 방법은 Send(&amp;quot;^c&amp;quot;)를 보낸 직후에 컨트롤 키를 강제로 떼는 명령을 보내는 것입니다. 대부분의 경우 이 방법으로 문제가 해결됩니다.&lt;br /&gt;
#:&amp;lt;source lang=autoit&amp;gt;&lt;br /&gt;
Send(&amp;quot;^c&amp;quot;)&lt;br /&gt;
; 잠시 대기하여 Send 명령이 완전히 처리되도록 합니다.&lt;br /&gt;
Sleep(100)&lt;br /&gt;
; 왼쪽 컨트롤 키를 강제로 떼는 명령&lt;br /&gt;
Send(&amp;quot;{LControl Up}&amp;quot;)&lt;br /&gt;
; 오른쪽 컨트롤 키를 강제로 떼는 명령 (필요한 경우)&lt;br /&gt;
Send(&amp;quot;{RControl Up}&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#:설명:&lt;br /&gt;
 * Send(&amp;quot;{LControl Up}&amp;quot;): 왼쪽 컨트롤 키를 떼는 이벤트를 보냅니다.&lt;br /&gt;
 * Send(&amp;quot;{RControl Up}&amp;quot;): 오른쪽 컨트롤 키를 떼는 이벤트를 보냅니다.&lt;br /&gt;
 * Sleep(100): Send(&amp;quot;^c&amp;quot;) 명령이 시스템에 완전히 전달되고 처리될 시간을 줍니다. 너무 짧으면 문제가 발생할 수 있습니다.&lt;br /&gt;
=== Send(&amp;quot;{LControl}&amp;quot;) 또는 Send(&amp;quot;{RControl}&amp;quot;)를 이용한 토글 ===&lt;br /&gt;
# 컨트롤 키가 토글된 상태라면, 해당 컨트롤 키를 다시 한 번 누르는 것(Send(&amp;quot;{LControl}&amp;quot;))이 토글을 해제하는 방법이 될 수 있습니다. 이는 시스템이 해당 키를 누르는 것으로 인식하고 상태를 변경할 것이기 때문입니다.&lt;br /&gt;
#:&amp;lt;source lang=autoit&amp;gt;&lt;br /&gt;
Send(&amp;quot;^c&amp;quot;)&lt;br /&gt;
Sleep(100)&lt;br /&gt;
; 왼쪽 컨트롤 키를 다시 한 번 눌러 토글 해제 시도&lt;br /&gt;
Send(&amp;quot;{LControl}&amp;quot;)&lt;br /&gt;
; 오른쪽 컨트롤 키도 다시 한 번 눌러 토글 해제 시도 (필요한 경우)&lt;br /&gt;
Send(&amp;quot;{RControl}&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#:*설명:&lt;br /&gt;
 * 이 방법은 컨트롤 키가 &amp;quot;토글&amp;quot; 상태로 고정되는 특정 상황에서 유용합니다. 일반적인 Send(&amp;quot;^c&amp;quot;)는 컨트롤 키를 누른 상태에서 &amp;#039;c&amp;#039;를 누르고 바로 떼는 것이므로, 이런 문제가 발생한다면 시스템 또는 특정 애플리케이션과의 상호작용 방식 때문일 수 있습니다.&lt;br /&gt;
=== BlockInput을 이용한 키 입력 방지 (더 강력한 방법)===&lt;br /&gt;
# BlockInput 함수를 사용하여 스크립트 실행 중 사용자 또는 다른 프로그램의 키보드/마우스 입력을 일시적으로 차단할 수 있습니다. 이를 통해 Send(&amp;quot;^c&amp;quot;) 명령이 의도치 않은 상태로 남는 것을 방지할 수 있습니다.&lt;br /&gt;
#:&amp;lt;source lang=autoit&amp;gt;&lt;br /&gt;
BlockInput(1) ; 키보드/마우스 입력 차단 시작&lt;br /&gt;
Send(&amp;quot;^c&amp;quot;)&lt;br /&gt;
Sleep(100)&lt;br /&gt;
Send(&amp;quot;{LControl Up}&amp;quot;) ; 확실히 떼기&lt;br /&gt;
Send(&amp;quot;{RControl Up}&amp;quot;) ; 확실히 떼기&lt;br /&gt;
BlockInput(0) ; 키보드/마우스 입력 차단 해제&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#:*설명:&lt;br /&gt;
 * BlockInput(1): 스크립트가 키 입력을 보내는 동안 다른 입력이 간섭하는 것을 막아줍니다.&lt;br /&gt;
 * BlockInput(0): 작업을 마친 후에는 반드시 해제해야 합니다. 그렇지 않으면 사용자가 컴퓨터를 제어할 수 없게 됩니다.&lt;br /&gt;
&lt;br /&gt;
=== GetAsyncKeyState를 이용한 실시간 감지 (고급)===&lt;br /&gt;
# 이 방법은 DLLCall을 통해 Windows API 함수인 GetAsyncKeyState를 호출하여 특정 키의 현재 상태를 확인할 수 있습니다. &lt;br /&gt;
# 이는 실시간으로 키 눌림 상태를 확인해야 할 때 유용합니다. 하지만 설정이 좀 더 복잡합니다.&lt;br /&gt;
#:&amp;lt;source lang=autoit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; DllCall 선언 (한 번만 선언하면 됩니다)&lt;br /&gt;
Global Const $VK_LCONTROL = 0xA2 ; 왼쪽 컨트롤 키 가상 키 코드&lt;br /&gt;
Global Const $VK_RCONTROL = 0xA3 ; 오른쪽 컨트롤 키 가상 키 코드&lt;br /&gt;
&lt;br /&gt;
; 함수 정의&lt;br /&gt;
Func IsControlKeyDown()&lt;br /&gt;
    Local $iLControlState = DllCall(&amp;quot;user32.dll&amp;quot;, &amp;quot;short&amp;quot;, &amp;quot;GetAsyncKeyState&amp;quot;, &amp;quot;int&amp;quot;, $VK_LCONTROL)&lt;br /&gt;
    Local $iRControlState = DllCall(&amp;quot;user32.dll&amp;quot;, &amp;quot;short&amp;quot;, &amp;quot;GetAsyncKeyState&amp;quot;, &amp;quot;int&amp;quot;, $VK_RCONTROL)&lt;br /&gt;
&lt;br /&gt;
    ; GetAsyncKeyState의 반환 값은 최상위 비트(bit 15)가 설정되면 키가 눌려 있는 상태&lt;br /&gt;
    If BitAND($iLControlState[0], 0x8000) Or BitAND($iRControlState[0], 0x8000) Then&lt;br /&gt;
        Return True&lt;br /&gt;
    Else&lt;br /&gt;
        Return False&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
; 사용 예시&lt;br /&gt;
Send(&amp;quot;^c&amp;quot;)&lt;br /&gt;
Sleep(100)&lt;br /&gt;
&lt;br /&gt;
If IsControlKeyDown() Then&lt;br /&gt;
    ConsoleWrite(&amp;quot;컨트롤 키가 눌려있는 상태입니다. 토글 해제를 시도합니다.&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
    Send(&amp;quot;{LControl Up}&amp;quot;)&lt;br /&gt;
    Send(&amp;quot;{RControl Up}&amp;quot;)&lt;br /&gt;
    Sleep(50) ; 충분히 해제될 시간&lt;br /&gt;
EndIf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
#:*설명:&lt;br /&gt;
 * GetAsyncKeyState: 특정 가상 키 코드(Virtual Key Code)를 인자로 받아 해당 키의 현재 상태를 반환합니다. 반환 값의 최상위 비트(0x8000)가 설정되어 있으면 키가 현재 눌려있는 상태입니다.&lt;br /&gt;
&lt;br /&gt;
 * $VK_LCONTROL, $VK_RCONTROL: 왼쪽/오른쪽 컨트롤 키에 해당하는 가상 키 코드입니다.&lt;br /&gt;
&lt;br /&gt;
 * 이 방법은 문제 발생 여부를 직접 확인하고 조치할 수 있다는 장점이 있지만, DllCall에 대한 이해가 필요합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 권장하는 방법 ===&lt;br /&gt;
# 대부분의 경우 1번 (Send(&amp;quot;{LControl Up}&amp;quot;) 강제 실행) 방법이 가장 간단하고 효과적입니다. &lt;br /&gt;
# 만약 이 방법으로도 문제가 해결되지 않는다면, 3번 (BlockInput) 을 고려해보고, 더 정밀한 제어가 필요하거나 특정 상황에서만 문제가 발생하는 경우 4번 (GetAsyncKeyState) 을 사용할 수 있습니다.&lt;br /&gt;
# 문제가 발생하는 특정 애플리케이션이나 상황이 있다면, 해당 정보를 함께 고려하여 더 적절한 해결책을 찾을 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
[[category:autoit]]&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>