프날 오토핫키 강좌
누르면 강좌 리스트가 나와요
프날 오토핫키 강좌

프날 오토핫키 질문 커뮤니티

* 질문 공지사항(질문 요령) 필독해주세요.: https://pnal.kr/pages/how-to-question
* 답글 작성시 "비밀글" 설정을 해제해주세요. 비회원제로 운영되기 때문에 제가 비밀 답글로 답변 드리면 작성자분도 읽을 수 없습니다.
* 메인 질문은 위쪽 양식을 이용해주시고, 답글로는 간단한 글이나 추가 질문만 해주세요.
* 강좌의 발전을 위해 설문조사 참여해주세요! : https://survey.pnal.dev/pnalahk-feedback

질문 답변 목록

    ●  ●  ●
  • Q. 프로그래밍 문제 14 [수정/삭제] [답글] 작성 날짜: 2022.10.06 16:09

    오토핫키 강좌 너무 잘 보고있는 학생입니다. 14번문제를 이중루프 없이 짤 수 있을 거 같은 생각이 들어서 아래처럼 짜 보았는데요, 첫 번째 체크박스가 체크되었다가 체크가 풀리고, 두 번째 체크박스가 체크 되었다가 풀리고- - 뒤로 쭉 반복되는 현상이 나타납니다. 제 생각에는 이론상 작동이 안 될 이유가 없다는 느낌입니다.아얘 성립할 수 없는 코드인가요? 혹은 특정 부분에 문제가 있는걸까요? 답변해주시면 감사하겠습니다.

    Loop, 13
    {
    a := A_index * 20
    Gui, add, Checkbox, x%a% y20 w20 h20 vSet%A_index%,
    }
    Gui, Add, Button, x95 y50 w96 h30 gBtn, 누른다!
    Gui, Add, Edit, x-1 y90 w999 h20 Disabled vEdit, 현재 상태: 준비 중
    Gui, Show, w291 h109, 굴러간다!
    return

    b := 1
    c := -4
    Btn:
    GuiControl,,Edit, 현재 상태: 굴리는 중
    Loop {
    GuiControl, , Set%b%, 1
    b++
    Sleep 500

    GuiControl, , Set%c%, 0
    c++
    Sleep 500

    if ( c = 13 )
    c := 1
    else if ( b = 13 )
    b := 1
    }

    GuiClose:
    ExitApp

  • ●  ●  ●
  • Q. 이미지,픽셀 서치와같은거 응용문 질문드려요 [수정/삭제] [답글] 작성 날짜: 2022.10.05 19:14

    안녕하세요

    이미지서치 픽셀서치와 같이

    이미지서치는 뒷부분에 [ 이미지.BMP ]와같은 파일만 가능한건지
    아니면
    Gui, add, Edit, x0 y0 w0 h0 , 9999 <<< 요기부분에 숫자를 넣은걸 인식할수 있는 기능들이 있을까요..

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      안녕하세요.

      이미지서치의 마지막 매개변수는 ImageFile로, 이미지 경로를 받는 매개변수입니다. 그러니까 이미지가 있어야합니다.

      숫자를 넣겠다는게 무슨 동작을 원하시는지 감이 잘 안잡히는군요. 숫자로 된 픽셀값을 서치하고자 한다면 픽셀서치를 쓰면 됩니다. 이미지서치는 이미지를 인식하는 명령어입니다.

      숫자를 넣는 방법을 여쭈신다면 NO 이고(왜냐하면 상술했듯 이미지서치의 그 매개변수는 ImageFile 매개변수이기 때문입니다) 원하시는 동작이 무엇인지 모르겠으나 그 동작을 이룰 수 있는 방법이 있냐면 (대부분의 경우)YES일 것입니다.

      원하는 동작을 구체적으로 설계해보신 후 이를 해결하는 다른 방법을 찾아보시길 바랍니다.

  • ●  ●  ●
  • Q. Gui , Add, Edit 관련질문 [수정/삭제] [답글] 작성 날짜: 2022.10.02 21:26

    안녕하세요
    Gui , Add, Edit 요고를 사용했을떄 뒤에 박스안에있는 문자열로 말고
    키보드를 인식을 하게끔 할수있을까요?

    예로들어

    Gui, Add, text, x23 y70 w110 h20, 원하는 버튼
    Gui, Add, Edit, x90 y66 w35 h20 v원하는버튼, 1

    이렇게 했을경우 메세지 박스안에 숫자 1 이라는것만 표기가 되는데
    키보드 자체의 F1과같은 키보드를 누를시 F1이 표현이 되고 키보드 자체를 인식을 하고싶을때 또는 F1을 인식했을경우
    Gui, Submit, nohide 요곳으로 불러와서 사용을 할수있을까요

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      안녕하세요.

      Edit 컨트롤 말고, Hotkey라는 컨트롤을 사용하시면 키보드 입력이 그대로 표현됩니다. Ctrl+F1을 누르면 핫키 컨트롤에 그대로 Ctrl+F1이라고 표현됩니다.

      이 컨트롤에 g레이블을 달면 내용이 변할 때마다 특정 동작을 실행할 수 있습니다(Edit도 마찬가지죠)

      https://www.autohotkey.com/docs/commands/GuiControls.htm#Hotkey

      위 문서를 참고하세요

  • ●  ●  ●
  • Q. 사이트 내 단어 찾기 [수정/삭제] [답글] 작성 날짜: 2022.09.23 09:31

    안녕하세요~
    프로그램 강의 해주셔서 정말 감사합니다ㅎㅎ
    그런데 궁금한게 생겼는데요~
    인터넷 사이트내에서 '커뮤니티' 라던지 '질문' 이라던지 특정 단어를 빠르게 찾아 색깔로 표시해주거나 알림창이 뜨게 하는 방법은 없을까요?

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      안녕하세요.

      Ctrl+F 키를 눌러 단어를 입력하면 해당 단어만 표시될 것입니다. 이를 이용해보는 것은 어떨까요?

  • ●  ●  ●
  • Q. 리스트박스내 폰트크기 조절 [수정/삭제] [답글] 작성 날짜: 2022.09.22 08:17

    수고하십니다
    강좌덕분에 오토핫키를 배우게 되어서
    정말 감사를 드립니다.
    57강의 ListBox에서
    항목1
    항목2
    항목3
    항목4
    ....
    항목간의 간격과,글자크기,글자진하게등
    가독성을 높이는 방법이 궁금합니다
    수고하세요

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      안녕하세요.

      제가 본가가 아니라 ㅠㅠ 코드 테스트가 불가능한 상황이어서, 해외 포럼 자료를 찾아 올려드립니다.

      https://www.autohotkey.com/boards/viewtopic.php?t=59191
      색상 바꾸기

      https://www.autohotkey.com/boards/viewtopic.php?t=17230
      상하 크기 조절


  • ●  ●  ●
  • Q. 서브루틴 쌓여도 괜찮나요? [수정/삭제] [답글] 작성 날짜: 2022.09.21 16:47

    방법 1
    loop
    {
    msgbox a!
    msgbox b!
    }


    방법 2
    a:
    msgbox a!
    gosub b
    msgbox 여긴 못오지
    return

    b:
    msgbox b!
    goto a
    return


    방법1과 2모두 실행을 시켰을경우 결과값이 동일 하겠지만
    2방법 같은경우 서브루틴에서 돌아올 수 없고 서브루틴이 계속 쌓이게 될텐데
    이거 계속 쌓아도 괜찮은 건가요?







    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      안녕하세요.

      문제가 없다곤 못하겠습니다.

      1. 가독성의 문제로, 코드를 읽어 내려가는 시선이 엉망이 됩니다. 반복문은 하나의 블록 안에서만 반복하지만, goto 혹은 gosub을 사용하면 그렇지 않으니까요. 생산성이 많이 떨어질 것입니다.
      질문자분이 서점에서 책을 산 후 첫 페이지를 펼쳤는데, "24페이지로 가시오" "20페이지로 가시오" "51페이지로 가시오" "3페이지로 가시오" 같은 안내와 순서로 책을 읽는다고 생각해보세요. 코드에 집중이 되지 않습니다. 당장 쓰신 예제도 1번 코드가 훨씬 읽기 쉽습니다.

      2. 메모리에 쌓이는 문제에 대해선, 솔직히 말해 잘 모르겠습니다만, 좋을 건 없어보입니다. 사용하지 않는 찌꺼기를 회수하여 사용할 수 있는 메모리 공간으로 만드는 것은 운영체제의 일이지만, 그들의 일을 조금이나마 덜어주기 위해 타 언어에서는 "이건 찌꺼기야" 라며 명시적으로 가비지 컬렉팅 등을 하게 됩니다.
      오토핫키는 그러한 개념이 없고, 자칫 잘못하면 메모리가 쌓일 수 있습니다. 물론 gosub 호출만으로 그 서브루틴 전체가 (마치 함수와 같이) 메모리 stack영역에 새로 생성되는 것은 아닐 것입니다. 그러나 gosub은 적어도 "이전 위치로 돌아가기 위해 필요한 이전 위치 정보"를 가지고 있을테며, 그러한 정보가 계속 쌓일 것입니다. 영원히 쌓이는 서브루틴의 그 위치정보를 운영체제가 찌꺼기로 판단할 수 있을지는 의문입니다,

      3. 구조적 프로그래밍 기법 위반에 대해
      goto 자체가 구조적 프로그래밍에서 지양하는 구조임은 이미 알고계실테고,
      현대 프로그래밍의 기초가 되는 구조적 프로그래밍에서는 하위 프로그램(함수, 프로시저, 서브루틴 등)의 종료점이 하나로 됨을 추천하고 있습니다(물론, 여러 현실적인 상황으로 인해 잘 지켜지진 않습니다. 그게 더 좋은 경우도 있고요.)
      A로 진입했다면 A의 종료점을 가지는 것이 제일 좋습니다. A로 진입하는 서브루틴이 종료점을 이상한 B 서브루틴이나 다른 곳에서 가지는 것은 좋지 못합니다.


      워낙 이런 프로그래밍 규범에 대해서는 오고가는 말이 많아서, 제가 꼭 정답은 아니겠으나 하나 확실한건 굳이 두번째처럼 짤 이유가 없다는 것이죠. 무조건 첫번째 방법을 추천합니다.

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      답변 감사합니다.
      메모리에 쌓일 것 같기도 하고, 별 상관 없을것 같기도 해서 궁금했습니다.
      찾아봐도 그쪽 내용은 못 찾겠더라구요.

  • ●  ●  ●
  • Q. 안녕하세요 프날님! [수정/삭제] [답글] 작성 날짜: 2022.09.20 19:11

    배열에 들어있는 숫자중 제가 원하는 숫자만 제거 하고 싶을때는 어떻게 해야하는지 궁금합니다.

    numbers := [1,2,3,4,5,6,7,8,9,10]

    을 선언고

    numbers.RemoveAt(4)를 빼고

    그 다음

    numbers.RemoveAt(8)을 하면

    실제로는 9가 삭제됩니다.

    아무래도 4가 빠지면서 자리수가 앞으로 땡겨져서 9가 8번째가 되어서 그런거겟지요

    제가 원하는 숫자를 배열에서 뺄수 있는 방법이 따로 잇을까요?

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      안녕하세요.

      배열을 순회하며 하나씩 지우는 방법이 제일 나을 것 같습니다. 반복문을 이용해보세요.

  • ●  ●  ●
  • Q. 날짜 연산 [수정/삭제] [답글] 작성 날짜: 2022.09.15 12:29

    b1:
    gui,submit,nohide
    date+=-10,days
    formattime,set2,%date%,M/d(ddd)
    formattime, CurrentDateTime,, M/d(ddd)


    if(set2<CurrentDateTime)
    {
    msgbox,1
    }
    else{
    msgbox,2

    return

    오늘을 9/15일일때 1을 출력하기 위해서 날짜를 입력했는데
    9/21 , 9/22 , 9/10 조건에 성립하도록 날짜를 입력했을땐 1이 출력됩니다
    set2라는 변수가 9/12~9/19까지는 2로 나옵니다
    왜그런걸까요?

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      안녕하세요.

      어떤 결과를 원하시는 것인가요? 그리고 각 변수는 어떤 값이 담겨있나요?
      오늘 날짜가 date 변수에 담긴건가요? 아니면 CurrentDateTime에 담긴건가요? date 변수는 뭐가 입력되어있나요?

      모호한 부분이 많아서 답변이 힘드네요.
      적어도 이 코드가 해야하는 궁극적 목적은 무엇인지('~~~를 입력했을 때 ~~~라면 ~~~를 출력하는 코드이다' 등), 그리고 각 코드조각 밖에서 활용된 변수가 어떤 역할인지는 알려주셔야 원인 파악이 될 듯 합니다.
      다만, 여러가지 부분을 테스트해볼 순 있겠습니다.

      1. date += -10, days는 잘 되는지
      - 만약 안된다면 date 변수의 날짜 형식이 잘못 된 것입니다

      2. set2, CurrentDateTime의 형식이 M/d(ddd)로 잘 바뀌는지 확인하기
      - 만약 안된다면 formattime에서 해당 변수들을 시간 변수로 인식하지 못하는 것입니다.(=형식오류)

      3. set2 < CurrentDateTime이 정상적으로 작동하는지 확인하기
      - 만약 안된다면 두 변수가 < 연산자로 비교되지 않는 형식인 것입니다. (예를 들어서, 수로 해석할 수 없는 문자가 들어있는 등..)

      MsgBox로 각 변수의 변화를 관찰해보세요. 개인적으로 if문 바로 위에 MsgBox로 set2, CurrentDateTime을 표시해보는 단계부터 해볼 것 같습니다.

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      포맷팅된 문자열끼리의 비교에서 문제가 있었던거 같습니다

      그래서 포맷팅하기 전에 날짜 값으로 먼저 비교하고 포맷팅을 했더니 해결됐습니다

      b1:
      Gui, Submit, NoHide

      date += -10, days

      set2 := date
      FormatTime, currentDateTime, , yyyyMMddHHmmss

      if (set2 < currentDateTime)
      {
      MsgBox 1
      MsgBox % formattingDate(set2) . "<" . formattingDate(currentDateTime)
      }
      else
      {
      msgbox 2
      MsgBox % formattingDate(set2) . ">" . formattingDate(currentDateTime)
      }
      return

      F12::Reload

      formattingDate(date) {
      FormatTime, formattedDate, % date, M/d(ddd)
      return formattedDate
      }

  • ●  ●  ●
  • Q. 유트브강좌 사이트 [수정/삭제] [답글] 작성 날짜: 2022.09.13 15:39

    유트브나 다른사이트 강좌는 안하시나여?

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      안녕하세요.

      네... 유튜브는 계획에 없으며, 다른 사이트라 함은 어떤 것을 말씀하시는 진 모르겠지만, 오토핫키 v2 강좌는 준비중에 있습니다.

  • ●  ●  ●
  • Q. h모양에 새 AutoHotkey Script [수정/삭제] [답글] 작성 날짜: 2022.09.11 12:35

    h모양에 새 AutoHotkey Script 이렇게 생긴 녹색프로그램이 있는데 찾는법을 모릅니다

    • A. 답변 드립니다. Q. 추가 질문입니다. [...]

      안녕하세요.

      새 AutoHotkey Script 라고 적힌 파일은 강좌에서 언급한대로 스크립트 파일을 만드신 것 같습니다(새로 만들기 > 새 AutoHotkey Script 메뉴를 통해 만드신거죠).

      그러나 이것이 녹색 H 아이콘이라면 SciTE4AutoHotkey의 설치가 제대로 되지 않은 듯 합니다. 우클릭 후 Edit Script 메뉴가 나타나지 않으면 설치 중 오류가 있거나 한 경우이니, SciTE의 구버전을 설치해보시는 등 대안 설치법을 강구해보시면 됩니다.

◀  1 2 ···  ▶