티스토리 뷰

반응형

이런 의문이 들었습니다.

오토핫키에서  if(Fan_num >= 2 and instr(isExit,"있음"))

instr 이것의 부정은?


오토핫키(AutoHotkey)에서 Instr 함수의 부정 조건을 사용하는 방법은 Instr 함수가 0을 반환하는 경우를 체크하면 됩니다. Instr 함수는 지정된 문자열을 찾지 못하면 0을 반환하므로, 이를 활용해 부정 조건을 설정할 수 있습니다.

예를 들어, 주어진 조건에서 instr(isExit, "있음")의 부정을 사용하고 싶다면, 이를 다음과 같이 작성할 수 있습니다:

if(Fan_num >= 2 and !Instr(isExit, "있음"))
{
    ; 부정 조건이 참일 때 실행할 코드
}
위 코드에서 !Instr(isExit, "있음")는 isExit 문자열에 "있음"이 포함되지 않는 경우에 참이 됩니다. 이를 통해 원하는 부정 조건을 구현할 수 있습니다.



JSON처럼 오토핫키도 사용할 수 있나?

오토핫키에서 예를들면 rib이라는 변수에 제이슨 스타일처럼 키와 value를 넣을수 있을까?
rib= {"width":10, "height":20}  이런식으로 가능할까?  오토핫키(AutoHotkey)에서는 AHK v2에서 JSON 스타일의 객체를 다루는 것이 더 직관적이지만, AHK v1에서도 객체를 사용할 수 있습니다. 아래는 AHK v1과 AHK v2에서 각각 JSON 스타일의 객체를 다루는 예시입니다.


AHK v1에서 JSON 스타일 객체 사용하기
AHK v1에서는 객체를 만들고 키-값 쌍을 추가하는 방식으로 JSON 스타일의 객체를 생성할 수 있습니다.


rib := Object()
rib["width"] := 10
rib["height"] := 20

MsgBox, Width: % rib["width"] ", Height: " rib["height"]
AHK v2에서 JSON 스타일 객체 사용하기
AHK v2에서는 더 직관적으로 객체를 생성하고 사용할 수 있습니다.

rib := { width: 10, height: 20 }

MsgBox("Width: " rib.width ", Height: " rib.height)
AHK v1에서 AHK v2 스타일의 객체 사용하기
AHK v1에서도 AHK v2 스타일로 객체를 생성할 수 있지만, 약간의 문법적 차이가 있습니다. 다음은 그 예시입니다.

rib := { "width": 10, "height": 20 }

MsgBox, Width: % rib.width ", Height: " rib.height
요약
AHK v2를 사용하면 JSON 스타일의 객체를 더욱 직관적으로 다룰 수 있으며, AHK v1에서는 Object() 함수를 사용해 객체를 생성하고 키-값 쌍을 추가하여 비슷한 구조를 구현할 수 있습니다. AHK v1에서도 AHK v2 스타일의 객체를 사용할 수 있지만, 키에 따옴표를 사용해야 합니다.

내 오토핫키가 v2인지 v1인지 어떻게 알지?
ChatGPT
오토핫키(AutoHotkey)의 버전을 확인하는 방법은 스크립트 내에서 간단한 명령을 사용하여 확인할 수 있습니다. 아래는 AHK 스크립트에서 현재 사용 중인 버전을 확인하는 방법입니다.

AHK v1에서 버전 확인
AHK v1에서는 A_AhkVersion 변수를 사용하여 버전을 확인할 수 있습니다.

ahk
코드 복사
MsgBox, AutoHotkey 버전: %A_AhkVersion%
AHK v2에서 버전 확인
AHK v2에서도 비슷한 방법으로 버전을 확인할 수 있습니다.

MsgBox("AutoHotkey 버전: " A_AhkVersion)
위 스크립트를 실행하면 현재 사용 중인 AutoHotkey의 버전이 메시지 박스로 표시됩니다. 이 메시지를 통해 AHK v1인지 v2인지 확인할 수 있습니다.

AHK v1 스크립트:
MsgBox, AutoHotkey 버전: %A_AhkVersion%
AHK v2 스크립트:
MsgBox("AutoHotkey 버전: " A_AhkVersion)
스크립트를 실행하고 표시되는 버전을 확인하세요. AHK v1에서는 MsgBox, ... 형식의 메시지 박스가 나타나고, AHK v2에서는 MsgBox(...) 형식의 메시지 박스가 나타납니다.

버전 1.1.33.10 이라고 나온다.
ChatGPT
AutoHotkey 1.1.33.10은 AHK v1 버전입니다. 따라서, AHK v1 문법을 사용하여 JSON 스타일의 객체를 생성하고 사용할 수 있습니다. 아래는 AHK v1에서 JSON 스타일의 객체를 사용하는 예시입니다.

JSON 스타일 객체 생성 및 사용 예시 (AHK v1)
; 객체 생성
rib := Object()
rib["width"] := 10
rib["height"] := 20

; 값 출력
MsgBox, Width: % rib["width"] ", Height: " rib["height"]
AHK v1에서 AHK v2 스타일로 객체 생성하기
AHK v1에서도 다음과 같이 AHK v2 스타일의 객체를 사용할 수 있지만, 키에 따옴표를 사용해야 합니다.

ahk
코드 복사
; AHK v2 스타일 객체 생성
rib := { "width": 10, "height": 20 }

; 값 출력
MsgBox, Width: % rib.width ", Height: " rib.height
위 두 가지 방법 중 원하는 방법을 사용하여 객체를 생성하고 사용할 수 있습니다. AHK v1에서는 Object() 함수를 사용하거나, AHK v2 스타일의 객체를 만들어 키와 값을 쉽게 다룰 수 있습니다.

v1에서 v2로 넘어가려고 하면 v1 코드가 전부 호환이 되는가?


AutoHotkey v1에서 v2로 넘어가는 과정에서 많은 코드가 호환되지 않습니다. AHK v2는 더 엄격한 문법과 새로운 기능을 도입했기 때문에, v1 스크립트를 v2로 직접 실행하려면 일부 코드를 수정해야 합니다. 아래는 주요 차이점과 전환 시 고려해야 할 사항들입니다.

주요 차이점 및 전환 시 고려 사항
함수 호출 방식

AHK v1: FuncName()
AHK v2: FuncName()

AHK v1에서는 변수 참조 시 % 기호를 자주 사용합니다.
AHK v2에서는 A_Var := "value"와 같이 사용하며, % 기호를 거의 사용하지 않습니다.

AHK v1: MsgBox, Text
AHK v2: MsgBox("Text")

AHK v1: obj := Object(), obj["key"] := value
AHK v2: obj := {key: value}, obj.key := value

AHK v1과 v2 모두 함수 정의는 비슷하지만, v2에서는 매개변수 및 반환 타입을 더 명확히 지정할 수 있습니다.
예제 코드 전환
AHK v1 코드 예제

; AHK v1 코드
rib := Object()
rib["width"] := 10
rib["height"] := 20
MsgBox, Width: % rib["width"] ", Height: " rib["height"]
AHK v2 코드 예제

; AHK v2 코드
rib := {width: 10, height: 20}
MsgBox("Width: " rib.width ", Height: " rib.height)
전환 가이드라인
변수 참조와 문자열

AHK v1에서 % 기호를 사용한 변수 참조는 v2에서 제거됩니다. 변수는 직접 참조합니다.
AHK v1: MsgBox, %variable%
AHK v2: MsgBox(variable)
루프와 조건문

AHK v1에서 Loop와 같은 구문은 v2에서도 유사하게 사용되지만, 문법적 차이가 있을 수 있습니다.
키보드 및 마우스 핫키

대부분의 핫키와 핫스트링은 v2에서도 유사하게 사용됩니다. 하지만, 복잡한 매크로는 검토가 필요합니다.
스크립트 구조

AHK v2는 더 구조화된 스크립트를 장려합니다. 예를 들어, #Include를 사용하여 외부 파일을 포함시키는 방법이 더 엄격해졌습니다.

전환을 진행하기 전에 스크립트의 주요 기능을 테스트하고, 필요한 수정 사항을 미리 계획하는 것이 좋습니다. 이렇게 하면 v1에서 v2로의 전환이 더 원활해질 것입니다.
반응형
댓글