매크로

조회 수 1101 추천 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
분류 제목 글쓴이 최근변경 추천
자유 히트2는 오토핫키 없을까요 1 매매매핫키 2022.12.07 0/0
자유 히로매크로 사용중입니다. 1 매끄로 2015.03.16 0/0
자유 희한하네요... 2 보득 2015.02.02 0/0
자유 흠냐 오토핫키와 c++ 연관성 34f35 2015.10.09 0/0
자유 흠.. 안녕들 하세요.. 13 폐이니즘 2015.01.16 0/0
자유 흠 gdip 안쓰고도 비활성 이미지 서치가 가능하네요 4 루뽕 2015.11.19 0/0
질문 흑백화를 시킨 후 이미지를 저장 하였습니다. 이후 이... 1 haegu 2018.09.11 0/0
질문 흑백화 이미지서치 참고할만한 글 있나요?? 3 급홍어감별사 2018.07.02 0/0
질문 흑백 비활성 이미지 검색 구현하신 분 계세요? 4 프리 2019.05.23 0/0
자유 후.. 검은거 한번 만들어 볼까 합니다 쟈브 2018.11.14 0/0
질문 후 문의 2번째.. 드립니다......... 4 문의드립니다 2015.06.10 0/0
자유 효율적인 쫄작교체방법이 없을까요? 3 세나블텍 2015.08.06 0/0
질문 활성화된 프로세스 죽이는법 kill 3 리엔니케니스타 2017.03.29 0/0
정보 활성화된 창으로 esc보내는 라이브러리. 1 헐키 2015.06.19 0/0
질문 활성과 비활성의 차이가 무엇인가요~? 1 배고파3000 2018.09.04 0/0
질문 활성 ? 비활성 질문.. 2 아카드 2014.11.04 0/0
자유 확장자 변환기 3 없어돌아가 2015.04.01 0/0
질문 확장모니터에서 controlclick질문드립니다 레나류륜 2016.10.27 0/0
질문 확율을 결과물로 출력중입니다. 특수문자 출력을 못해요 3 가족오락관 2016.11.08 0/0
자유 확실히 오토핫키가... 16 아카드 2014.11.09 0/0
Board Pagination Prev 1 2345678910 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글