반응형

조건문은 개발의 꽃이라고 불릴 만큼 많이 사용하는 명령어 입니다. 

 

개발에서 조건문(conditional statement)은 프로그램이 특정 조건에 따라 다른 동작을 수행하도록 하는 제어 구조입니다. 일반적으로 조건문은 주어진 조건이 참(True)일 때와 거짓(False)일 때에 따라 프로그램의 흐름을 제어합니다. 가장 일반적인 조건문은 "if 문"입니다. 

 

이는 특정 조건이 참일 때 코드 블록을 실행하고, 조건이 거짓이면 해당 코드 블록을 건너뛰는 구조입니다. 

( 오토핫키는 수직 프로세스 구조입니다. 위에서 아래로 스크립트의 명령어를 수행합니다 )

 

num = 10

if num = 10
    msgbox,64,안내,안녕하세요
else
    msgbox,64,안내,안녕히 가세요

 

num 라는 변수에 10이라는 데이터를 담습니다. 

 

설명

if 조건 / num 이 10일 경우 

msgbox 명령어를 실행하고, 아이콘 64번 형태와 "안내" 라는 타이틀 을 가진 메세지창에, 안녕하세요를 띄우고,

만약 num이 아닐경우에는 동일한 옵션에 안녕히 가세요 라는 문구를 띄어라 라는 뜻입니다. 

 

변수 = 10

if %변수% = 10
    msgbox,64,안내,안녕하세요

 

가끔 위 와같이 변수를 %% 을 감싸서 사용하는 분이 있는데 이는 잘못된 작성법입니다. 

 

변수 = 10

변수10 = 5
if 변수%num% = 5
    msgbox,64,안내,안녕하세요

 

위와 같은 활용은 정상적인 작성법 입니다.

 

if(변수 = 10){
msgbox,64,안내,안녕하세요
}else{
msgbox,64,안내,안녕히가세요
}

 

위와 같은 형태도 정상적인 방법으로 사용할 수있으나,  쓸때 없는 {  } 괄호를 입력하여 줄수를 늘릴 필요는없습니다. 

 

 변수 = 10
 ifEqual,변수,10,msgbox,64,안내,안녕하세요

 

와같이 한 줄로도 표현할 수있습니다

 

변수 = 12
msgbox,64,안내,% (변수 = 10 || 변수 = 12) ? "안녕하세요" : "안녕히가세요"

 

위와 같이 삼항연산을 이용해서 한 줄로 표현할 수있습니다. 

삼항연산은

 

조건 ? 참 : 거짓 이 기본 구문입니다.

 
msgbox 의 기본 형태에 

% (변수 = 10 || 변수 = 12) ? "안녕하세요" : "안녕히가세요"

변수가 10 이나 12일 경우에 ? 안녕하세요를 띄우고 : (아니라면) 안녕히 가세요를 띄웁니다. 

 

/ 여기서 궁금해하시는 % 는 변수이용을 하는 방법입니다

변수 = 10 일때

 

msgbox,% 변수 

msgbox,%변수%

는 동일합니다. 다만 전자의 경우 %(띄어쓰기) 변수 를 입력합니다. 그래서 위와같은 삼항연상에서

변수 이용을 하여 텍스트 같은 데이터를 " " 로 감싸주어 표현한 것입니다. 

 


조건문을 이용해서 특정 "상황"에 대한 변수와 조건을 만들어서 처리합니다.

 

반응형
반응형

안녕하세요 오늘은 키 입력에대해서 배워볼 시간입니다.

키입력은 무엇일까요 ?

 

우리가 키보드를 누르는 행위와 마우스를 "직접적으로" 컴퓨터와 연결된 하드웨어를 통해

키입력을 인풋합니다. 

하드웨어식 키입력

 

하지만 오토핫키를 이용한 키입력은 "소프트웨어" 식 키입력입니다.

*CLASS DD 같이 소프트웨어 입력 -> 하드웨어로 입력으로 인식을 바꾸는 라이브러리가 존재합니다.

 

 

우리는 요기서 키입력을 두가지로 나눌 수 있습니다.

  • 활성화된 창에 키입력을 전달하는
  • 비활성 된 창에 키입력을 전달하는

2가지의 종류로 나눌 수 있는데요,

기본적인 구문을 확인해봅시다,

 

 

활성화 된 창에 키입력을 전달하는 기본적인 구문

Send: 기본적으로 Send는 SendEvent와 동의어이지만 SendInput 또는 SendPlay와 동의어로 만들 수 있습니다.

F1::
Send,안녕하세요#!@#!@

;#!@#!@ 문구는 출력이 안되는것을 볼 수있다.


SendRaw: 키의 모든 문자가 문자 그대로 해석되고 전송된다는 점을 제외하고는 보내기와 유사합니다. 자세한 내용은 원시 모드를 참조하십시오.

F1::
SendRaw,안녕하세요#!@#!@

;그대로 문자가 출력되는 것을 알 수있다.

 

SendInput: SendInput 및 SendPlay는 Send와 동일한 구문을 사용하지만 일반적으로 더 빠르고 안정적입니다. 또한 전송 중에 물리적 키보드 또는 마우스 활동을 버퍼링하므로 사용자의 키 입력이 전송되는 키 입력과 간섭되지 않습니다. SendMode를 사용하여 SendInput 또는 SendPlay와 동의어로 만들 수 있습니다. 각 모드에 대한 자세한 내용은 아래 입력 보내기 및 재생 보내기를 참조하십시오.

F1::
SendInput,안녕하세요#!@#!@

;안녕하세요만 출력됨


SendEvent : SendEvent는 1.0.43 이전 Send 명령과 동일한 방법을 사용하여 키 입력을 보냅니다. 키 입력이 전송되는 속도는 SetKeyDelay에 의해 결정됩니다.

F1::
SendEvent ,안녕하세요#!@#!@

;안녕하세요만 출력됨

보통은 활성화된 창에서 키 입력을 전달하려면 상황에 맞게 사용합니다.

 

 

 

 

단어를 입력하였으면 이제 키 조합에대해서 알아볼텐데요

컨트롤 V 컨트롤 알트 등등,, 키조합이 필요할때는 분명히 있습니다.

F1::
send,{ctrl down}
send,{ctrl up}

;컨트롤을 눌렀다가 떄라

return



send,{ctrl down}
sleep,1000
send,{ctrl up}
;컨트롤을 1초동안 눌렀다가 때라 


send,{ctrl down}v{ctrl up}
;컨트롤 V를 눌렀다가 컨트롤 키를 때라
;*이 구문은 간혹 컨트롤 v가 안눌릴때가 있습니다. 사용을 권고드리지 않습니다. 

send,^v
;컨트롤키와 v를 동시에 눌러라
;*이 구문은 간혹 컨트롤 v가 안눌릴때가 있습니다. 사용을 권고드리지 않습니다. 

send,{Shift down}{Ctrl down}v{Shift up}{Ctrl up}
send,{Shift down}{Ctrl down}v{Ctrl up}{Shift up}
;어떤 것을 먼저 때느냐의 차이이지만, 그 속도를 비교하기에는 미미하므로 아무렇게 사용하셔두됩니다.

send,shift down
;shift down 이라는 글자를 타이핑 합니다.



Ver:= "변수"
send,% Ver
;변수의 표현식은 차후 배울 예정입니다. 

ver = "변수"
send,% Ver
;변수의 표현식은 차후 배울 예정입니다. := / = 의차이점입니다.

Ver:= "변수"
send,%Ver%
;% ver / %ver% (띄어쓰기 중요) 의 표현방식도 있습니다. 

ver:= "a"
ver_a:= "b"
send,% ver . ver_a
; . ver 과 ver_a를 합쳐서 출력 - send 입력을 전달합니다.

등등 여러가지의 방법이 있습니다

 

이하 아래 키코드를 다양하게 사용하는 방법을 참조하여 작업을 해보시면 편하실 것입니다.

첨부자료는 각 F1 - F12 의 키를 통해 작동되는 구조이므로, 메모장을 키고 테스트를 해보시길 권장드립니다. 

 

Send 예제.ahk
0.00MB

 

 

 

 

 

{F1} - {F24} Function keys. For example: {F12} is F12.
{!} !
{#} #
{+} +
{^} ^
{{} {
{}} }
{Enter} Enter on the main keyboard
{Escape} or {Esc} Esc
{Space} Space (this is only needed for spaces that appear either at the beginning or the end of the string to be sent -- ones in the middle can be literal spaces)
{Tab} Tab
{Backspace} or {BS} Backspace
{Delete} or {Del} Del
{Insert} or {Ins} Ins
{Up}  (up arrow) on main keyboard
{Down}  (down arrow) on main keyboard
{Left}  (left arrow) on main keyboard
{Right}  (right arrow) on main keyboard
{Home} Home on main keyboard
{End} End on main keyboard
{PgUp} PgUp on main keyboard
{PgDn} PgDn on main keyboard
{CapsLock} CapsLock (using SetCapsLockState is more reliable on Win 2k/XP). Sending {CapsLock} might require SetStoreCapsLockMode Off beforehand.
{ScrollLock} ScrollLock (see also: SetScrollLockState)
{NumLock} NumLock (see also: SetNumLockState)
{Control} or {Ctrl} Ctrl (technical info: sends the neutral virtual key but the left scan code)
{LControl} or {LCtrl} Left Ctrl (technical info: sends the left virtual key rather than the neutral one)
{RControl} or {RCtrl} Right Ctrl
{Control down} or {Ctrl down} Holds Ctrl down until {Ctrl up} is sent. To hold down the left or right key instead, replace Ctrl with LCtrl or RCtrl.
{Alt} Alt (technical info: sends the neutral virtual key but the left scan code)
{LAlt} Left Alt (technical info: sends the left virtual key rather than the neutral one)
{RAlt} Right Alt (or AltGr, depending on keyboard layout)
{Alt down} Holds Alt down until {Alt up} is sent. To hold down the left or right key instead, replace Alt with LAlt or RAlt.
{Shift} Shift (technical info: sends the neutral virtual key but the left scan code)
{LShift} Left Shift (technical info: sends the left virtual key rather than the neutral one)
{RShift} Right Shift
{Shift down} Holds Shift down until {Shift up} is sent. To hold down the left or right key instead, replace Shift with LShift or RShift.
{LWin} Left Win
{RWin} Right Win
{LWin down} Holds the left Win down until {LWin up} is sent
{RWin down} Holds the right Win down until {RWin up} is sent
{AppsKey} Menu (invokes the right-click or context menu)
{Sleep} Sleep.
{ASC nnnnn} Sends an Alt+nnnnn keypad combination, which can be used to generate special characters that don't exist on the keyboard. To generate ASCII characters, specify a number between 1 and 255. To generate ANSI characters (standard in most languages), specify a number between 128 and 255, but precede it with a leading zero, e.g. {Asc 0133}.
Unicode characters may be generated by specifying a number between 256 and 65535 (without a leading zero). However, this is not supported by all applications. For alternatives, see the section below.
{U+nnnn} [v1.0.90+]: Sends a Unicode character where nnnn is the hexadecimal value of the character excluding the 0x prefix. This typically isn't needed in Unicode versions of AutoHotkey, where Send and ControlSend automatically support Unicode text.
SendInput() or WM_CHAR is used to send the character and the current Send mode has no effect. Characters sent this way usually do not trigger shortcut keys or hotkeys.
{vkXX}
{scYYY}
{vkXXscYYY}
Sends a keystroke that has virtual key XX and scan code YYY. For example: Send {vkFFsc159}. If the sc or vk portion is omitted, the most appropriate value is sent in its place.
The values for XX and YYY are hexadecimal and can usually be determined from the main window's View->Key history menu item. See also: Special Keys
Warning: Combining vk and sc in this manner is valid only with Send. Prior to [v1.1.27], hotkeys permitted but ignored any non-hexadecimal characters following XX.
{Numpad0} - {Numpad9} Numpad digit keys (as seen when NumLock is ON). For example: {Numpad5} is 5.
{NumpadDot} . (numpad period) (as seen when NumLock is ON).
{NumpadEnter} Enter on keypad
{NumpadMult} * (numpad multiplication)
{NumpadDiv} / (numpad division)
{NumpadAdd} + (numpad addition)
{NumpadSub} - (numpad subtraction)
{NumpadDel} Del on keypad (this key and the following Numpad keys are used when NumLock is OFF)
{NumpadIns} Ins on keypad
{NumpadClear} Clear key on keypad (usually 5 when NumLock is OFF).
{NumpadUp}  (up arrow) on keypad
{NumpadDown}  (down arrow) on keypad
{NumpadLeft}  (left arrow) on keypad
{NumpadRight}  (right arrow) on keypad
{NumpadHome} Home on keypad
{NumpadEnd} End on keypad
{NumpadPgUp} PgUp on keypad
{NumpadPgDn} PgDn on keypad
{Browser_Back} Select the browser "back" button
{Browser_Forward} Select the browser "forward" button
{Browser_Refresh} Select the browser "refresh" button
{Browser_Stop} Select the browser "stop" button
{Browser_Search} Select the browser "search" button
{Browser_Favorites} Select the browser "favorites" button
{Browser_Home} Launch the browser and go to the home page
{Volume_Mute} Mute/unmute the master volume. Usually equivalent to SoundSet, +1, , mute.
{Volume_Down} Reduce the master volume. Usually equivalent to SoundSet -5.
{Volume_Up} Increase the master volume. Usually equivalent to SoundSet +5.
{Media_Next} Select next track in media player
{Media_Prev} Select previous track in media player
{Media_Stop} Stop media player
{Media_Play_Pause} Play/pause media player
{Launch_Mail} Launch the email application
{Launch_Media} Launch media player
{Launch_App1} Launch user app1
{Launch_App2} Launch user app2
{PrintScreen} PrtSc
{CtrlBreak} Ctrl+Pause
{Pause} Pause
{Click [Options]}
[v1.0.43+]
Sends a mouse click using the same options available in the Click command. For example, Send {Click} would click the left mouse button once at the mouse cursor's current position, and Send {Click 100 200} would click at coordinates 100, 200 (based on CoordMode). To move the mouse without clicking, specify 0 after the coordinates; for example: Send {Click 100 200 0}. The delay between mouse clicks is determined by SetMouseDelay (not SetKeyDelay).
{WheelDown}, {WheelUp}, {WheelLeft}, {WheelRight}, {LButton}, {RButton}, {MButton}, {XButton1}, {XButton2} Sends a mouse button event at the cursor's current position (to have control over position and other options, use {Click} above). The delay between mouse clicks is determined by SetMouseDelay. WheelLeft/Right require [v1.0.48+], but have no effect on operating systems older than Windows Vista.
LButton and RButton correspond to the "physical" left and right buttons when used with Send, but the "logical" left and right buttons when used with hotkeys. In other words, if the user has swapped the buttons via system settings, {LButton} performs a logical right click, but a physical left click activates the RButton:: hotkey. Likewise for {RButton} and LButton::. To always perform a logical click, use {Click} instead.
{Blind} Enables the Blind mode, which gives the script more control by disabling a number of things that are normally done automatically to make things generally work as expected. The string {Blind} must occur at the beginning of the string.
{Raw}
[v1.0.43+]
Enables the Raw mode, which causes the following characters to be interpreted literally: ^+!#{}. Although the string {Raw} need not occur at the beginning of the string, once specified, it stays in effect for the remainder of the string.
{Text}
[v1.1.27+]
Enables the Text mode, which sends a stream of characters rather than keystrokes. Like the Raw mode, the Text mode causes the following characters to be interpreted literally: ^+!#{}. Although the string {Text} need not occur at the beginning of the string, once specified, it stays in effect for the remainder of the string.

 

 

 

 

 

 

반응형
반응형

오토핫키 연산자 입니다. 산술 / 증감 / 논리 / 비교 / 비트 / 포인터 / 삼항 / 대입에 대한 연산자입니다.

이는 차차 하나씩 배워나가며 진행해봅시다. 

 

 

반응형
반응형

#기본 구문

Random, OutputVar [, Min, Max]
Random, , NewSeed

 

OutputVar

결과를 저장할 변수의 이름. 저장된 부동 소수점 수의 형식은 SetFormat에 의하여 결정됩니다.

 

Min

생성될 가장 작은 수. 음수나 부동 소수점수 또는 표현식 가능. 생략하면, 가장 작은 값은 0입니다. 정수에 대하여 허용되는 가장 낮은 값은 -2147483648 for integers이지만, 부동 소수점 수는 제한이 없습니다.

 

Max

생성될 가장 큰 수, 음수나 부동 소수점 수 또는 표현식 가능. 생략하면, 가장 큰 수는 정수에 대하여 2147483647입니다 (그러나 부동 소수점 수는 제한이 없습니다).

 

NewSeed

이 모드는 무작위 수 발생자에 NewSeed로 다시 씨앗을 먹입니다 (표현식 가능). 이것은 이어 발생되는 모든 무작위 수에 영향을 미칩니다. NewSeed는 0부터 4294967295 (0xFFFFFFFF) 사이의 정수여야 합니다. 다시 씨앗 먹기기는 발생된 무작위 수의 품질/보안성을 향상시킬 수 있습니다. 특히 NewSeed가 품질이 떨어지는 의사-무작위 수가 아니라 진짜 무작위수이면 더 좋습니다. 일반적으로, 씨앗 다시 먹이기는 한 번 이상 할 필요가 없습니다.

스크립트에서 다시 씨앗 먹이기가 사용되지 않았다면, 씨앗은 64-비트 값의 아래쪽 32-비트로 시작합니다. 이 값은 1601년 1월 1일 이후로 100-나노초 간격으로 나눈 개수입니다. 이 값은 ~7.2 분마다 0부터 4294967295 사이를 왔다 갔다 합니다.

 

 

#예제파일

Random,ver,1,100
msgbox,% ver

random,ver,1,5
if(ver = 1){
	msgbox,64,안내,랜덤 숫자 1출력되었습니다
}else if(ver = 2){
	msgbox,64,안내,랜덤 숫자 2출력되었습니다
}else{
	msgbox,64,안내,% ver " 이 출력되었습니다"
}

 

01.랜덤 명령어.ahk
0.00MB

반응형

+ Recent posts