프날 오토핫키 강좌

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

* 쉬운 비밀번호를 설정하면 다른 사람에 의해 글이 수정 및 삭제될 수 있습니다.
* 질문 요령 참고해주세요.: https://pnalahk.tistory.com/pages/how-to-question

질문 답변 목록

  • Q. 아무리 해도 멈춤이 안됩니다,,,ㅠㅠ [...]

    안녕하세요! 이제막 오토핫키를 공부하고 있는 청년입니다!
    공부를 하면서 아래의 while 반복문을 써서 무한 반복 매크로를 만들었습니다.
    그런데 멈춤버튼을 누르면 상태변수 := true 에서 false값으로 변하게 만들었는데
    반복문에서 탈출을 하지 못합니다..
    멈춤버튼이 분명 작동은합니다.
    다른 좌표를 클릭하게 해서 확인해본니
    작동은하는데
    False값을 주어도 While 반복문이 멈추질 않습니다../
    loop를 사용하여 break를 넣어도 마찬가지 였습니다,.
    뭐가 문제일까요??

    gui, add, text, x100 y10 w150 h20 Center, 매크로프로그램
    gui, add, Button, x10 y30 w150 h20, 시작
    gui, add, Button, x10 y55 w150 h20, 멈춤
    gui, add, Button, x10 y80 w150 h20, 종료
    gui,show, , 매크로프로그램

    CoordMode, pixel, screen
    CoordMode, mouse, screen

    상태변수 := false

    return

    GuiClose:
    {
    ;MsgBox, 프로그램이 종료되었습니다.
    ExitApp
    }
    return

    Button시작:
    {
    상태변수 := true
    while(상태변수 := true)
    {

    ImageSearch, x좌표, y좌표, 0, 0, A_ScreenWidth,A_ScreenHeight, *30 C:\Users\freek\Desktop\오토핫키 공부\image\샘플.bmp
    if(ErrorLevel = 0)
    {
    MouseMove, %x좌표%, %y좌표%
    sleep, 1000
    }

    ImageSearch, x좌표, y좌표, 0, 0, A_ScreenWidth,A_ScreenHeight, *30 C:\Users\freek\Desktop\오토핫키 공부\image\샘플3.bmp
    if(ErrorLevel = 0)
    {
    MouseMove, %x좌표%, %y좌표%
    Sleep, 1000
    }
    }
    }
    return

    Button멈춤:
    {
    상태변수 := false
    {
    MouseMove, 1023, 513
    Sleep, 1000
    }
    }
    return

    Button종료:
    {
    x좌표 := 0
    y좌표 := 0
    ;MsgBox, %x좌표%, %y좌표%
    ExitApp
    }
    return

    • A. 안녕하세요. while문 안의 조건식이 대입문으로 되어있네요
      대입문이 아닌 비교문으로 작성해야합니다. https://pnal.kr/10를 참고해주세요.

      조건식이 비교문으로 작성되어야 하므로 :=가 아닌 =가 들어가야겠죠?

      여담으로, 버튼은 g레이블을 사용해주시길 부탁드리며 레이블 부분은 중괄호로 묶을 필요가 없습니다. [...]


  • Q. gui 채팅창을 만들어보려고 하는데 [...]

    여기서 많이 배우고 회사에서도 유용하게 사용하고 있는 중입니다.
    소스를 찾아보니 TCP/IP 소켓을 이용해 채팅을 구현하는 게 있더라고요...
    그런데 말이 너무 어려워서 손도 못 쓰고 있는 중이라..
    gui에서 다수 인원을 위한 채팅창을 만들려고 하는데 이거에 대해서 강좌를 해주실 생각은 없으신지요?

    • A. 안녕하세요.

      소켓과 관련된 라이브러리 socket.ahk가 있긴 한데, 저도 이미 있는 라이브러리 가져다가 작동시키는 수준인지라 강좌하기엔 부족하지 않나 싶습니다. 아직 남들을 가르치기엔 실력이 없네요. 그냥 쓰라면 어떻게든 쓰겠지만요.

      제가 소켓 통신을 완전히 이해할 때가 되면 쓰도록 하겠습니다. [...]


  • Q. 파싱 질문 [...]

    sample-123
    이라는 문자열이 있을 때 123부분만 가져오려면 어떻게 해야하나요?
    substr을 사용할려고 했는데 앞에 sample부분이 매번 바뀌고
    123 부분 숫자도 매번 바껴서
    substr에 자를 위치를 못넣네요
    방법이있는지

    • A. 안녕하세요.

      sample-123 문자열이 str라는 변수에 담겨있다고 가정하겠습니다.
      가운데 하이픈이 있다면 아래와 같이 InStr로 하이픈의 위치를 가져온 후 SubStr을 사용하면 됩니다.

      position := InStr(str, "-")
      MsgBox, % SubStr(str, position + 1)

      1을 더해준 이유는 하이픈 다음 문자(숫자의 시작)부터 가져오기 위함입니다. position 변수에 어떤 값이 들어있는지 확인해보시면서 공부하시면 좋습니다. InStr에 대해선 https://pnal.kr/62 를 참고해주세요.

      만약 하이픈이 없을수도 있다면, 아래와 같이 정규식을 사용해서 숫자만을 가져와야합니다.
      MsgBox, % RegExReplace(str, "[^0-9]")
      의 값을 확인해보세요. 이와 관련된 강좌는 https://pnal.kr/pages/RegEx2 에 있습니다.

      강좌 내용에는 없지만, StrSplit을 사용하는 방법도 있습니다.
      MsgBox, % StrSplit(str, "-")[2]
      강좌에서 배열을 다루진 않아서 []를 사용한 문법이 어색할 수 있습니다.

      개인적으로 세 가지 방법 중 하이픈이 있다면 1번, 없다면 2번 방법을 선호합니다. [...]


  • Q. 커뮤니티 게시판 어디로 갔나요?;; [...]

    커뮤니티 게시판 주소가 어떻게 되는건지..? 이 질문의 답변도 어디서 볼 수 있을지..?;;

    • A. 안녕하세요. 방개측에 글을 늦게 썼군요.

      https://banggae.space/board/8114
      위 링크와 같은 이유로 방개를 폐쇄하고, 모든 질문/답변의 기능을 현재 페이지에서만 받기로 하였습니다. 요약하자면 관리의 어려움 및 프날 강좌를 보시는 분들에 대한 질문 접근성 향상을 위해서입니다.

      앞으로 이곳에 질문글을 작성해주시면 감사하겠습니다. [...]