오토핫키 커뮤니티

조회 수 1192 추천 0 댓글 10

DropDownList에는 소문자 알파벳과 대문자 알파엣이 같이 있습니다.


Gui, Add, DropDownList, x10 y10 vdrop1, |a|b|c|d|A|B|C|D

Gui, Add, Button, x10 y+3, 저장

Gui, Add, Button, x+3, 불러오기

Gui, Show, AutoSize, Drop예제

return 


GuiClose:

ExitApp


Button저장:

  Gui, Submit, NoHide

  IniWrite, %drop1%, droplist.ini, drop, drop1

return


Button불러오기:

  Gui, Submit, NoHide

  IniRead, drop1_list, droplist.ini, drop, drop1

  GuiControl, ChooseString, drop1, % drop1_list

return


이렇게 소스를 하고나서 drop1에 값을 대문자 D로 선택 후 저장을 하면 ini 파일에는 대문자 D로 저장이 되고

IniRead로 값을 불러와서 Msgbox로 확인을 해도 대문자 D로 나오지만

GuiControl로 변수값을 대입하면 앞쪽에 있는 d로 선택이 됩니다...


만약 반대로 drop1 리스트에 대문자가 앞이로 소문자가 뒤일경우에도 소문자를 저장을 하고 불러오면

앞에 있는 대문자로 선택이 됩니다....


저장한 값으로 선택되게 할려면 DropDownList 옵션에 AltSubmit 넣고

GuiControl, choose 로 하는 방법밖에 없나요..


이렇게 하면 매크로에서 DropDownList 값을 영문으로 받아와서 매크로 진행을 해야하는데..

DropDownList 목록은 알파벳 a-z까지 대소문자를 하려니.. 

소스가 너무 길어져서 다른 방법이 있을까 도움을 요청해봅니다..


  • Hangoon 2018.06.14 11:11

    http://autohotkeykr.sourceforge.net/docs/commands/StringCaseSense.htm

    GuiControl 윗 라인에 StringCaseSence On하시고, 아래 라인에서 다시 바로 Off해주시면 될거 같구요..


    혹은 말씀하신대로 altsubmit 이용하셔도 됩니다.

    잘 생각해보시면 소스가 굳이 길어질 필요가 없어요

    if (drop1_list=1)

     drop1_list:="a"

    else if (drop1_list=2)

     drop1_list="b" ... 


    이런식으로 하시면 당연히 길어지고요. 


    ddl목록이 a부터 Z까지라면

    StringOrder:="abc..........XYZ"

    라고 변수 하나를 스크립트 초반에 선언해두고


    Button불러오기 라벨에는

      Gui, Submit, NoHide

      IniRead, drop1_list, droplist.ini, drop, drop1

      GuiControl, Choose, drop1, % drop1_list

      drop1_list:=SubStr(StringOrder, drop1_list - 1)


    라고 하면 되지 않을까요

    SubStr함수에서 drop1_lis 값에 -1 해주는 이유는


    위에 드랍다운리스트 항목 정의에서 a|b|c|d...로 하지 않고 |a|b|c|d... 로 하셨기 때문입니다

    맨 앞에 빈항목이 하나 있다보니 숫자를 변수 내 문자열 위치로 매치할때 아마 1을 빼줘야 매치가 정확히 될거에요.


    이런식으로 하셔도 되구요... a~Z까지 요소 하나당 문자 하나씩 할당된 배열하나 생성하셔서 해도 되구요.

    근데 아마 저 방법이 젤 간편할거에요. 배열로 만들려면 몇줄 더 쓰셔야할듯,..

  • Rabbit 2018.06.14 14:16
    StringOrder := "|a|b|c|d|A|B|C|D"
    Gui, Add, DropDownList, x10 y10 vdrop1, % StringOrder
    Gui, Add, Button, x10 y+3, 저장
    Gui, Add, Button, x+3, 불러오기
    Gui, Show, AutoSize, Drop예제
    return

    GuiClose:
    ExitApp

    Button저장:
    Gui, Submit, NoHide
    IniWrite, %drop1%, droplist.ini, drop, drop1
    return

    Button불러오기:
    Gui, Submit, NoHide
    IniRead, drop1_list, droplist.ini, drop, drop1
    StringCaseSense, On
    GuiControl, Choose, drop1, % drop1_list
    StringCaseSense, Off
    drop1_list:=SubStr(StringOrder, drop1_list - 1)
    return

    이렇게 해봤는데요;;
    똑같이 되네요...
    혹시 제가 틀린 부분이 있을까요..
  • Hangoon 2018.06.14 16:22
    StringOrder := "abcdABCD"
    Gui, Add, DropDownList, x10 y10 altsubmit vdrop1, |a|b|c|d|A|B|C|D
    Gui, Add, Button, x10 y+3, 저장
    Gui, Add, Button, x+3, 불러오기
    Gui, Show, AutoSize, Drop예제
    return 

    GuiClose:
    ExitApp

    Button저장:
    Gui, Submit, NoHide
    IniWrite, %drop1%, droplist.ini, drop, drop1
    return

    Button불러오기:
    Gui, Submit, NoHide
    IniRead, drop1_list, droplist.ini, drop, drop1
    GuiControl, Choose, drop1, % drop1_list
    drop1_list:=SubStr(StringOrder, drop1_list - 1,1)  ; 이건 제가 빼먹은 부분이네요
    msgbox, % drop1_list
    return

    저도 궁금해서 다시 찾아봤는데 애초에 StringCaseSense는 GuiControl에는 영향을 안준다고 합니다. 
    altsubmit넣고 하는 방법밖에 없는거 같네요
  • Hangoon 2018.06.14 16:23

    만약 StringOrder에 파이프넣고 하시고 싶으시면 배열화해서 쓰시면 됩니다. 사실 이게 더 직관적이긴 하죠.


    StringOrder := "|a|b|c|d|A|B|C|D"

    StrArray:=StrSplit(StringOrder,"|")

    Gui, Add, DropDownList, x10 y10 altsubmit vdrop1, % StringOrder

    Gui, Add, Button, x10 y+3, 저장

    Gui, Add, Button, x+3, 불러오기

    Gui, Show, AutoSize, Drop예제

    return 


    GuiClose:

    ExitApp


    Button저장:

    Gui, Submit, NoHide

    IniWrite, %drop1%, droplist.ini, drop, drop1

    return


    Button불러오기:

    Gui, Submit, NoHide

    IniRead, drop1_list, droplist.ini, drop, drop1

    GuiControl, Choose, drop1, % drop1_list

    drop1_list:=StrArray[drop1_list]

    msgbox, % drop1_list

    return

  • 할거엄따구 2018.06.14 18:34

    Gui, Add, DropDownList, x10 y10 vdrop1, |a|b|c|d|A|B|C|D

    Gui, Add, Button, x10 y+3, 저장

    Gui, Add, Button, x+3, 불러오기

    Gui, Show, AutoSize, Drop예제

    return 


    GuiClose:

    ExitApp


    Button저장:

      Gui, Submit, NoHide

      IniWrite, %drop1%, droplist.ini, drop, drop1

    return


    Button불러오기:

      vDrop := "abcdABCD"

      Gui, Submit, NoHide

      IniRead, drop1_list, droplist.ini, drop, drop1

       nDrop := RegExMatch(vDrop,drop1_list) + 1 ; +1은 맨앞에 빈칸 때문에...

      GuiControl, ChooseString, drop1, % nDrop

    return

    이렇게 한번 해보세요.

  • Hangoon 2018.06.14 19:33
    맨밑의 ChooseString을 Choose로 바꾸면 이 방법도 가능하네요.
    정규식은 대소문자 구문을 하니..
  • 할거엄따구 2018.06.14 22:39
    아 그부분은 안봤네용 ㅎㅎ
  • Rabbit 2018.06.14 23:19

    오오....회사에서 바빠서 못하다가 집와서 애기재우고 봤는데..

    댓글 달아주신 @Hangoon 님/@할거엄따구 님 두분께 정말 감사드립니다.

  • profile
    BotLoi 2018.06.23 00:56
    Loop, 26
    str .= "|" Chr(97 + A_Index - 1) ; a ~ z
    Loop, 26
    str .= "|" Chr(65 + A_Index - 1) ; A ~ Z

    Gui, Add, DropDownList, x10 y10 vdrop1, % str

    Gui, Add, Button, x10 y+3, 저장

    Gui, Add, Button, x+3, 불러오기

    Gui, Show, AutoSize, Drop예제

    return 



    Button저장:

    Gui, Submit, NoHide

    IniWrite, %drop1%, droplist.ini, drop, drop1

    return



    Button불러오기:

    Gui, Submit, NoHide

    IniRead, drop1_list, droplist.ini, drop, drop1

    str_num := Asc(drop1_list)
    if str_num < 97
    str_num := str_num - 65 + 2 + 26 ; A ~ Z
    else
    str_num := str_num - 97 + 2 ; a ~ z

    GuiControl, Choose, drop1, % str_num

    return



    GuiClose:

    ExitApp
  • profile
    BotLoi 2018.06.23 01:01
    StrSplit()과 정규식을 사용한다면 마지막 부분이 좀 더 간단해지긴 하겠네요.

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 if문 else if , else 순서 맞나요? 7 레이오 2018.06.24 0/0
자유 DropDownList 와 IniRead 불러온 값으로 선택되게 할려... 10 Rabbit 2018.06.23 0/0
질문 돌 키우기 매크로 2 komgoo 2018.06.24 0/0
질문 비활성이미지서치 재질문 3 cho9161 2018.06.18 0/0
질문 비활성이미지서치 개발환경 윈7/64비트 질문 4 cho9161 2018.06.18 0/0
질문 혹시 미뮤에서 PostMessage 동작하나요? 웃진 2018.06.11 0/0
자유 보안괜찮은지 디컴좀해주세요! 6 이주우우오 2018.07.10 0/0
질문 루프 구문 그리고 이미지서치 2 하얏꾸 2018.06.10 0/0
질문 gdip 쓰려는데 문제가 있습니다.... 2 패귀다리기 2018.06.27 0/0
질문 마우스 클릭 시 postmessage 씹힘 현상. 유한 2018.06.07 0/0
질문 winmove 실행시 오토핫키 팅김 질문드립니다 Liayn 2018.06.05 0/0
질문 블루스택 멀티 비활성 질문입니다 2 zndkdk 2018.06.13 0/0
질문 일랜시아라는 게임을 하는데요.. 3 하얏꾸 2018.09.12 0/-1
질문 이미지 서치에 대한 질문입니다! 3 FreeSoft 2018.06.11 0/0
질문 Gdip_imagesearch의 기능이 무엇인가요? 4 패귀다리기 2018.09.01 0/0
자유 초심자가 쓸만할까요? 2 seonnia 2018.06.27 0/0
질문 블루스택 멀티 비활성 질문있습니다 2 zndkdk 2018.06.05 0/0
질문 오토핫키가 게임에서 적용이 안돼요 3 하얏꾸 2018.06.05 0/0
질문 ahk가 바탕화면만 인식해요 2 도움 2018.06.04 0/0
질문 특정프로그램 마우스 안먹힘 1 쿠우우우우 2018.06.04 0/0
Board Pagination Prev 1 ... 575859606162636465 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글