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

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

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

질문 답변 목록

    ●  ●  ●
  • Q. 클립보드로 이름변경해서 저장하기,삭제하기 [수정/삭제] [답글] 작성 날짜: 2022.06.27 11:40

    안녕하세요^^강좌 너무 유용하게 잘 보고있습니다.

    이번에 gdip 두 이미지 비교하기 강좌보면서 비교 테스트까진 성공했는데
    여기서 응용을 하려고하니 오류만뜨고 안되네요 ㅠㅠ

    pToken := Gdip_StartUp()

    postclick(235,133)
    Sleep, 50
    pBitmap1:=Gdip_BitmapFromHWND("216|471|260|164")

    DiffPos := Gdip_CompareBitmap(pBitmap1, "옥수수.png")
    if (DiffPos = -2)
    Msgbox, 두 이미지의 크기가 달라 비교할 수 없습니다.
    else if (DiffPos = -1)
    Msgbox, 두 이미지가 같습니다.
    else
    MsgBox, % "(" DiffPos.X ", " DiffPos.Y ")에서 다릅니다"


    Gdip_DisposeImage(pBitmap1)
    Gdip_Shutdown(pToken)


    옥수수.png는 폴더에 저장이 된 상태이고,msg박스로 테스트 해봤을때는 두 이미지가 같다고 뜹니다.
    여기서 두 이미지가 같을때 pBitmap1을 클립보드에 "옥수수.png"라는 이름으로 다시 저장을 하고싶은데
    어떤 명령어를 써아하는지 감이 안잡힙니다.ㅠㅠ(pBitmap은 10번까지 있어요.10종류를 비교,저장하고 싶습니다.)

    그리고 클립보드 저장에 성공한 이후에 클립보드 비우는 방법도 알고싶습니다.
    clipboard:="" 이 명령어를 써봤는데 처음부터 코드가 오류나서 그런건지 확인해도 비워지질 않더라구요.
    도움 부탁드립니다.

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

      안녕하세요.

      무슨 오류를 보시는지 저는 알 길이 없으니 ^^; 오류메시지라도 알려주셔야 합니다.

      여기서 두 이미지가 같을때 pBitmap1을 클립보드에 "옥수수.png"라는 이름으로 다시 저장을 하고싶은데
      어떤 명령어를 써아하는지 감이 안잡힙니다.ㅠㅠ
      => Gdip_SetBitmapToClipboard(pBitmap) 함수를 쓰면 클립보드에 비트맵을 저장할 수 있습니다. pBitmap 매개변수에 비트맵의 메모리 주소를 적으시면 됩니다(gdip 강좌에서 많이 쓰던 매개변수죠?)

      그리고 클립보드 저장에 성공한 이후에 클립보드 비우는 방법도 알고싶습니다.
      clipboard:="" 이 명령어를 써봤는데 처음부터 코드가 오류나서 그런건지 확인해도 비워지질 않더라구요.
      => clipbaord := "" 맞습니다.

  • ●  ●  ●
  • Q. ControlClick 백그라운드 화면에서 오류 [수정/삭제] [답글] 작성 날짜: 2022.06.24 13:37

    안녕하세요. 매번 큰 도움 받고 있습니다.

    ControlClick, WindowsForms10.BUTTON.app.0.3e799b_r14_ad15, 윈도우타이틀, , , ,NA

    이렇게 컨트롤을 정확히 지정하고 NA 옵션으로 백그라운드에서 클릭하도록 작성했습니다. 그런데 정상 작동하지 않을 때가 간혹 있어서 유심히 관찰해보니, 해당 컨트롤이 화면에 보이지 않으면 즉, 다른 화면 뒤에 컨트롤이 가려져 있으면 작동을 안 하는 거였더라구요. 최소화는 아니고 그냥 다른 화면 뒤에 가려져 있는 상태입니다.

    프날 님 비활성 클릭 강좌 내용을 다시 읽어봤는데 글 말미 옵션 설명에 "일부 창에서는 효과가 없을 수 있습니다."라는 표현이 눈에 들어왔습니다. 제 경우가 이에 해당하는 것 같은데요. 이런 경우 혹시 다른 대안책이 있을까요?

    ControlSend, WindowsForms10.BUTTON.app.0.3e799b_r14_ad15, !c, 윈도우타이틀

    이 전에는 ControlSend를 이용해서 해당 컨트롤에 설정된 단축키 Alt+C를 보내는 방식으로 사용했었습니다. 그런데 이렇게 사용하다보면 간혹 Foreground에 있는 창(예를 들어 엑셀 화면)에서 Alt키를 누른 것처럼 작동할 때가 있었습니다. 엑셀에서 Alt 키를 누르면 단축키로 연결될 알파벳들이 쭉 보이는 상태 말입니다. 이게 좀 신경 쓰여서 ControlClick으로 변경한 건데, 가려진 화면에서는 작동을 안 하는 문제가 또 있네요.

    혹시라도 다른 대안이 있으면 시도해 볼 수 있도록 좀 가르쳐 주시기 바랍니다. 거듭 감사드립니다.

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

      안녕하세요.

      프로그램마다 원인도 다르고 해결법도 달라서요 ㅠㅠ여러 방식을 시도해보시는 방법밖에는 없습니다. NA 옵션을 제거해보시고도 테스트 해보시고요..

      컨트롤 이름을 보니까 UWP 애플리케이션같은데 일반적인 Win32 애플리케이션이 아니라서 그런 것일수도 있겠습니다만, 같은 UWP 애플리케이션인 기본 계산기 앱에서는 제 환경에서 문제가 재현되지 않는 것을 보니 질문자님 환경에서만 발생하는지도 모르겠습니다. (Windows 기본 계산기 앱에서도 시도해보세요 한번)

      뾰족한 수를 알고있지는 않습니다 ㅠㅠ

  • ●  ●  ●
  • Q. 메세지박스 뜨는위치 변경할수 없는지요? [수정/삭제] [답글] 작성 날짜: 2022.06.23 06:18

    감사합니다
    자세한 설명에 잘 배우고 있습니다
    gui박스와 같이 msgbox도 뜨는 위치를 조정할수 없는지요?
    수고하세요

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

      안녕하세요.

      공식적으로 깔끔하게 지원하는 기능은 아닙니다.

      그래서 약간의 꼼수를 써야만합니다. 이 포럼의 스크립트를 참고해보세요.
      https://www.autohotkey.com/board/topic/122575-change-msgbox-position/
      MsgBox를 실행하기 전에, "0.05초 후에 MsgBox의 위치를 옮겨라!" 라는 명령을 미리 넣는 것이지요.

      아니면 ExecScript() 등의 외부 함수를 사용하여 MsgBox를 실행한 다음 WinMove를 이용하여 옮기는 방법이 있습니다.

      또는, GUI를 MsgBox와 동일하게 보이도록 만들어 띄우는 방법도 있습니다.

      아무튼 위의 링크를 참고해서 간략한 예시를 만들어보면 이렇습니다 ^^;

      =============

      SetWinDelay, 10 ;50ms안에 Msgbox가 안뜨면 안되므로, 윈도우 딜레이를 10ms로 설정

      ;=== 스크립트 메인부
      SetTimer, WinMoveMsgBox, -50
      MsgBox, MsgBox 예시
      ExitApp

      ;=== 아래 레이블은 MsgBox의 위치를 500, 500으로 합니다.
      WinMoveMsgBox:
      WinMove, ahk_class #32770,, 500, 500 ;여기가 MsgBox의 X, Y입니다.
      return

  • ●  ●  ●
  • Q. 프로그래밍 문제 조건 질문 [수정/삭제] [답글] 작성 날짜: 2022.06.16 04:15

    https://pnal.kr/41

    조건에 반복문을 5회 '미만'으로 사용할 것이라고 적혀있습니다.
    답을 보면 Loop, 5를 사용했는데, 미만이라는 표현에는 5가 포함 안되니 헷갈릴 것 같습니다.

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

      헉 ㅠㅠ

      수정했습니다

  • ●  ●  ●
  • Q. 비활성 클릭으로 최소화된 창 클릭하기 [수정/삭제] [답글] 작성 날짜: 2022.06.16 03:14

    control 클릭을 좌표로 구현했습니다.

    화면에 비활성화 된 채로 보여진 상태에서는 잘 되는데, 최소화를 눌러서 밑에 작업창에만 표시되고 화면에는 안보이는 상태에서는 작동이 안되더라고요.

    원래 이런건가요? 되게 하려면 어떻게 해야 할지 조언 부탁드립니다.

    감사합니다.

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

      네 프로그램마다 다르지만 대체로 그렇습니다. 창을 최소화하면 성능을 위해 윈도우상에서 최소한의 동작만 하게 됩니다. 그래서 ControlClick에 필요한 메시지를 받지 못하게 되는 경우가 많습니다.

  • ●  ●  ●
  • Q. 2. 오토핫키 맛보기에 오타 있습니다! [수정/삭제] [답글] 작성 날짜: 2022.06.15 06:06

    질문 삭제하셔도 됩니다.
    hello world 출력하는 쪽에 때"분"에 라고 적혀있습니다.

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

      감사합니다 ㅠㅠ

  • ●  ●  ●
  • Q. ControlClick에서 WinTitle이 같을때 [수정/삭제] [답글] 작성 날짜: 2022.06.14 16:17

    안녕하세요 프날님
    강좌를 보면서 차근히 실습도 해보고 즐겁게 배우고 있습니다.

    강좌중에 ControlClick의 예제파일 39강을 두번 다운받으면 2개의 창이 뜨는데요.
    2개의 창을 모두 클릭하게 하려고 했더니 두창 모두 WinTitle이 같네요.
    이럴땐 어떻게 설정값을 입력해야하나요?
    Window Spy에서 아래의 ahk_exe나 ahk_pid는 다른데 이값을 이용할 수도 있나요?

    어떤 방법이 있을까요?

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

      안녕하세요.

      말씀하신대로 ahk_exe와 ahk_pid를사용할 수 있습니다. 기초강좌라서 언급을 안드렸는데요, WinTitle 쓰는 곳에 ahk_exe (한칸 띄우고) ahk_exe명 이런식으로 쓰면 됩니다. ahk_pid는 프로그램 켤때마다 달라집니다.

      예를 들어서 WindowSpy에 ahk_exe: 123라고 되어있으면,

      ControlClick,~~~매개변수, WinTitle
      대신에
      ControlClick,~~~매개변수, ahk_exe 123
      이런식으로 적어주면 되죠

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

    강좌를 통해 많은 도움을 받고 있습니다. 감사합니다.
    질문을 드리고 싶은데요.

    이미지 서치 > 비활성 우클릭으로 툴팁(?)열기 > 툴팁내에서 이미지서치 > 툴팁에서 비활성 좌클릭

    이 작업을 하고 싶고, "툴팁내에서 이미지서치"까지는 성공했고 목표 하는 좌표의 절대 좌표는 찾아내었습니다.
    그런데 왜인지 이 툴팁은 현재 활성화되어 있는 창을 기준으로 좌표를 갖는것 같습니다. 어떤 창이 활성화 되어 있느냐에 따라 매번 툴팁의 좌표가 달라지니 난감하네요. 저는 화면위 절대 좌표를 가지고 있는데요.

    어떻게 매치시켜서 클릭하도록 해주어야 할지 모르겠네요 ㅜㅜ 도움을 구합니다

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

      안녕하세요. 말씀하신 부분은 툴팁이 아니라 우클릭 메뉴(컨텍스트 메뉴)를 말씀하신것이지요?

      1. Pixel의 Coordmode가 Relative인 상태에서 이미지서치 후 툴팁도 상대좌표로 클릭하게 하거나,

      2. 반대로, Menu의 Coordmode를 절대좌표로 설정하거나(강좌에선 Mouse, Pixel만 언급되어있지만, Menu를 대상으로 지정할수도 있습니다.)

      3. WinGetPos로 윈도우의 크기를 가져와서 더하기 빼기 하셔서 툴팁의 위치를 가져온 후 쓰셔도 됩니다.

      마지막으로, 기본 컨텍스트 메뉴라면 아래와 같은 함수를 과거에 만들어둔 적이 있습니다. 메뉴를 선택해주는 함수입니다. 메모장 켜신 후, 텍스트 하나 복사하신 뒤에 이 스크립트 실행시키고 Q를 눌러보세요. 붙여넣기 메뉴가 선택되어 붙여넣기 됩니다

      ===========

      q::
      SelectContextMenu("붙여넣기(P)")
      SelectContextMenu("N1")
      ExitApp

      SelectContextMenu(_textOrNum)
      {
      SendMessage, 0x1E1,,,,ahk_class #32768
      hContextMenu := ErrorLevel

      if (SubStr(_textOrNum, 1, 1) = "N") ;줄 넘버로 선택 경우
      {
      selectItem := 0
      Loop, % DllCall("user32\GetMenuItemCount", "Ptr", hContextMenu)
      {
      if (DllCall("user32\GetMenuItemID", "Ptr", hContextMenu, "UInt", A_index - 1) = 0) ;메뉴ID가 0인 경우(구분선)은 제외
      continue
      itemNum++
      if (itemNum = SubStr(_textOrNum, 2))
      {
      PostMessage, 0x1F1, % A_index - 1, 0,, ahk_class #32768 ;구분선을 포함한 순서 선택
      break
      }
      }
      return
      }
      else if (SubStr(_textOrNum, 1, 2) = "\N") ;줄 넘버로 선택하지 않는데 N으로 시작하는 메뉴 선택시 이스케이프(\N > N)
      _textOrNum := SubStr(_textOrNum, 2)

      VarSetCapacity(menuItemText, 1024) ;메뉴 아이템의 텍스트가 담길 공간 (1024 바이트)
      Loop, % DllCall("user32\GetMenuItemCount", "Ptr", hContextMenu)
      {
      hContextMenuItem := DllCall("user32\GetMenuItemID", "Ptr", hContextMenu, "UInt", A_index - 1) ;메뉴 아이템의 ID 구하기
      DllCall("user32\GetMenuString", "Ptr", hContextMenu, "UInt", A_index - 1, "Str", menuItemText, "Int", 1024, "UInt", 0x400) ;ID로 메뉴 아이템의 텍스트 구하기 (menuItemText에 담기게)
      if (StrReplace(menuItemText, "&") = _textOrNum) ;실행 취소(&U) → 실행 취소(U)
      {
      PostMessage, 0x1F1, % A_index - 1, 0,, ahk_class #32768
      break
      }
      }
      return
      }

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

      감사합니다!ㅎㅎ
      컨텍스트 메뉴라고 하는 거였군요 좋은걸 또 알아갑니다.

      저는 말씀하신 2번을 사용해 보았어요. 컨텍스트 메뉴의 좌표가 고정되어 찾아졌고 클릭해야 할 좌표도 찾았습니다.

      그런데 왜인지 컨텍스트 메뉴에서는 비활성클릭이 되지 않는것 같아요. 이게 메뉴에 따라 되지 않는 경우도 있는건가요? ㅜㅜ
      어렵네요...

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

      1. 컨텍스트 메뉴는 그 자체로 하나의 윈도우입니다(기본 컨텍스트 메뉴일 경우).

      그래서 비활성클릭시 WinTitle매개변수에 ahk_class #32768를 넣어주어야 합니다 (컨텍스트메뉴의 클래스명이 #32768이기 때문)

      2. 기본 컨텍스트 메뉴인 경우, 안정성을 위해 제가 제공해드린 함수를 사용하는 것이 좋을 듯 합니다.

      3. 만약 기본 컨텍스트 메뉴(윈도우에서 지원하는 거)가 아니라, 해당 애플리케이션에서 자체적으로 지원하는 메뉴일 경우엔 또 다릅니다. 그렇지만 이 경우는 애플리케이션마다 다르게 스크립트를 짜야하므로 어떻게 답변드릴 수 있는 점이 아닙니다 ㅠㅠ

      결론은 제가 드린 함수 사용하시는 편을 추천드립니다.
      말씀하신 증상의 일반적인 원인은 WinTitle을 #32768로 안써넣으셔서 그럽니다.
      그러나 좌표클릭은 동작하지 않는 경우도 있으므로, 위의 함수를 추천드리는 것입니다.

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

      감사합니다 프날님, 일찍이 답변을 달아주셨지만, 삶에 치여 이제야 확인합니다.ㅜㅜ

      저의 경우엔 zoom앱에서 사용하려는 목적이었습니다만 프날님의 설명을 듣고서 아직 제 수준에 할 수 있는 게 아닌것 같네요.ㅜㅜ 더 공부해 보겠습니다.

      답변에 깊이 감사드립니다!

  • ●  ●  ●
  • Q. 백그라운드 윈도우의 컨트롤 알아내기 [수정/삭제] [답글] 작성 날짜: 2022.06.10 17:57

    안녕하세요.

    하고 싶은 작업 : 백그라운드에 있는 어떤 프로그램의 창(컨트롤)에서 Ctrl+A, Ctrl+C로 복사를 하고 싶습니다.

    시도했던 방법 : Window Spy로 해당 프로그램 창의 컨트롤 이름을 확인. ControlClick으로 해당 창 중간쯤 좌표를 한 번 찍어주고, ControlSend로 해당 컨트롤에 ^a, ^c를 보내 정상적으로 복사할 수 있었습니다.

    문제점 : 해당 프로그램을 재실행(자동 업데이트)하면 컨트롤의 이름이 바뀝니다. MouseGetPos로 컨트롤의 이름을 구하는 방법까지는 해봤는데, 마우스 위치가 반드시 해당 창이 보이는 곳에 있어야 하더군요. 마우스 포인터 위치에서 해당 창이 보이지 않으면 MouseGetPos가 다른 창의 컨트롤을 구합니다.(혹시 몰라서 DetectHiddenWindows, On도 해봤습니다만 MouseGetPos에서 Window를 선택하는 게 없으니 소용 없습니다.)

    질문 : 백그라운드에 있고 가려져 있는 윈도우에서 Control 이름을 가져오는 방법이 없을까요? MouseGetPos를 백그라운드 창에서 작동시킬 방법이 있으면 좋을 것 같은데요. 도와주세요~

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

      안녕하세요.

      그 이름(아마 ClassNN을 말하신 듯 합니다.)이 매번 달라지는 컨트롤이 '달라지지 않는 것은' 무엇인가요?

      컨트롤의 내용? 속성? 스타일? 위치? 크기? 혹은 다른 컨트롤과의 순서 관계? 등... 변하지 않는 무언가가 있으니까 인간인 질문자님이 그 컨트롤의 이름이 매번 바뀜에도 구분할 수 있었겠죠? 이 바뀌지 않는 그 컨트롤의 속성을 '특징'이라고 하겠습니다.

      아무튼...
      WinGet 명령어를 이용하면 모든 컨트롤을 가져올 수 있습니다.

      https://www.autohotkey.com/docs/commands/WinGet.htm

      Sub-Command는 ControlList를 사용하면 되고요... 이렇게 하면 모든 컨트롤을 가져올 수 있습니다.

      그 후 모든 컨트롤에서 아까 알아낸 변하지 않는 컨트롤의 '특징'을 이용하여, 그 ClassNN이 변한 컨트롤이 어느 것인지 알 수 있겠죠. 예를 들어서 각 컨트롤의 위치를 가져왔을때, (A, B)에 있는 컨트롤이 있다면 그 컨트롤이 질문자님이 찾던 컨트롤이겠습니다.

      WinGet, var, ControlList, A
      MsgBox, % var

      예를 들어서, 위 구문을 실행시켜보시면 현재 활성화된 창의 모든 컨트롤을 출력하는 것을 볼 수 있습니다. (SciTE4에서 실행시켜보세요)

      WinGet, var, ControlList, A

      Loop, Parse, var, `n
      {
      ControlGetPos, vx, vy, vw, vh, %A_LoopField%, A
      MsgBox, % "현재 컨트롤의 ClassNN은 " A_LoopField "이고`nxywh는 각각 " vx ", " vy ", " vw ", " vh "입니다."
      }

      그렇다면 위 구문을 실행시켜보시면, 컨트롤의 위치를 다 뽑아볼 수 있지요. 그 뒤에 조건문을 이용하여 특정 위치에 가진 컨트롤만 가져온다면, 이것이 질문자님이 찾던 컨트롤의 ClassNN인 것입니다.

      ========

      WinGet, var, ControlList, A

      Loop, Parse, var, `n
      {
      ControlGetPos, vx, vy, vw, vh, %A_LoopField%, A
      if (vx = 100 && vy = 100 && vw = 200 && vh = 200)
      {
      controlName := A_LoopField
      break
      }
      }
      MsgBox, % ControlName

      ==========

      마지막 예제로, 위와 같이 하시면 x, y, w, h가 각각 100, 100, 200, 200인 컨트롤의 ClassNN을 가져올 수 있죠.

      위치가 달라지는 경우도 마찬가지입니다. 위에서 말씀드린 '특징'을 잡아서, 변하지 않는 그것과 모든 컨트롤의 그것을 비교시키면 되겠습니다.

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

      감사합니다. 매번 큰 도움을 받고 있습니다.

      Window Spy로 컨트롤의 정보를 찾는 것과 비슷한 일을 WinGet으로 할 수 있군요. ControlGetPos에서 원하는 조건을 충족하는 컨트롤을 찾는 게 많은 도움이 되었습니다.

      파악된 xywh 정보로 Control을 찾아보니 4개의 컨트롤 이름이 검색됩니다. 위치와 크기가 모두 동일한데, 제가 Window Spy 통해서 알고 있던 컨트롤 이름은 네 번째 것이었습니다. 다행히도 그 순서는 매번 달라지지 않는 것 같아서 네 번째 것을 변수에 담아서 나머지 코드에 적용했더니 원했던 결과가 나왔습니다. 컨트롤을 찾느라 시간이 조금 더 걸리기는 하겠지만, 지금처럼 유동적으로 컨트롤 이름을 찾아야 할 때 큰 도움이 되겠습니다. 감사합니다.

  • ●  ●  ●
  • Q. 이것은 번외 질문인데요. [수정/삭제] [답글] 작성 날짜: 2022.06.04 16:02

    선생님의 강좌 너무나도 감사히 잘 배우고 있습니다.
    번외 질문인데요. 이 사이트가 궁금합니다.

    현재 이 사이트는 무엇을 기반으로 만드신 것인지요?
    왼쪽에 목록창 뜨는 것도 궁금합니다.

    어떻게 하면 이것과 똑같은 홈페이지를 만들 수 있는지 소개 꼭 부탁드립니다.

    번외 질문이라 죄송합니다.

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

      안녕하세요.

      티스토리 블로그를 이용해서, 백엔드 부분은 티스토리 서버를 이용합니다. 그래서 저는 티스토리에 로그인해서 글을쓰고, 질문에 답변드리고, 사이트를 관리합니다.

      프론트엔드 부분(눈에 보이는 부분, 예를 들면 말씀하신 목록창같은 부분)은 제가 HTML/CSS/JS로 웹 디자인을 한 것입니다. 흔히 말하는 웹코딩입니다. 한마디로 티스토리 스킨을 자체 제작했다고 보시면 됩니다.

      '어떻게 하면 이것과 똑같은 홈페이지를 만들 수 있는지'에서는, HTML/CSS/JS를 책이든 인터넷이든 배우시면 겉보기가 이것과 똑같은 홈페이지가 만들어집니다. 그 뒤에 티스토리 블로그에서 스킨을 만드신 홈페이지 디자인으로 넣고, 글 본문을 티스토리 서버에서 보여주는 부분은 티스토리 스킨 가이드(https://tistory.github.io/document-tistory-skin/)를 참고하여 디자인에 끼워넣어주시면 됩니다.

      그런데 저는 굳이 프론트엔드를 자체제작 한 것이고요, 웹코딩 공부 없이 이와같은 목록형 강좌글이나 문서를 작성하려면 GitBook이라는 플랫폼에서 쉽게 작성할 수 있습니다. 프날 사이트와 동일한 형식(좌측 메뉴에서 글 리스트가 나오게)으로 글을 쓸 수 있습니다. 위에 링크 드린 티스토리 스킨 가이드가 GitBook으로 작성된 사이트입니다.

◀  1 2 ···  ▶