<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>LearningNote</title>
    <link>https://learningnote.tistory.com/</link>
    <description>LearningNote</description>
    <language>ko</language>
    <pubDate>Wed, 8 Jul 2026 00:46:33 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>LN</managingEditor>
    <item>
      <title>프로그래밍 강사님 필독! 저작권, IP 차단 걱정 없는 웹 크롤링 실습 환경을 소개합니다</title>
      <link>https://learningnote.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B0%95%EC%82%AC%EB%8B%98-%ED%95%84%EB%8F%85-%EC%A0%80%EC%9E%91%EA%B6%8C-IP-%EC%B0%A8%EB%8B%A8-%EA%B1%B1%EC%A0%95-%EC%97%86%EB%8A%94-%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%8B%A4%EC%8A%B5-%ED%99%98%EA%B2%BD%EC%9D%84-%EC%86%8C%EA%B0%9C%ED%95%A9%EB%8B%88%EB%8B%A4</link>
      <description>&lt;h1&gt;프로그래밍 강사님 필독! 저작권, IP 차단 걱정 없는 웹 크롤링 실습 환경을 소개합니다 (ScrapingSteps.com)&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요, 파이썬 및 데이터 분석 강의를 진행하고 계신 강사님들!  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강의 커리큘럼에서 '웹 크롤링(스크래핑)'은 수강생들의 만족도가 매우 높은 핵심 주제입니다. 하지만 동시에, 강의를 준비하는 입장에서는 가장 까다로운 주제이기도 합니다. 바로 &lt;b&gt;'적절한 실습 환경'&lt;/b&gt;을 찾기 어렵기 때문입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  크롤링 강의, 이런 어려움 겪고 계시지 않나요?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 웹사이트를 대상으로 강의를 진행하다 보면 여러 가지 예측 불가능한 문제에 부딪힙니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;⚠️ &lt;b&gt;법적/윤리적 책임 문제:&lt;/b&gt; 실습 대상 사이트에서 트래픽 과부하로 연락이 오거나, 저작권 문제로 클레임이 들어올까 우려됩니다.&lt;/li&gt;
&lt;li&gt;  &lt;b&gt;강의 중 IP 차단 위험:&lt;/b&gt; 여러 명의 수강생이 동시에 접속하여 요청을 보낼 경우, 강의실 IP가 차단되어 실습이 중단될 수 있습니다.&lt;/li&gt;
&lt;li&gt;  &lt;b&gt;불안정한 실습 환경:&lt;/b&gt; 강의 도중 대상 사이트의 HTML 구조가 예고 없이 변경되어, 준비한 예제 코드가 무용지물이 되곤 합니다.&lt;/li&gt;
&lt;li&gt;  &lt;b&gt;수강생 제약:&lt;/b&gt; IP 차단 우려 때문에 수강생들에게 &quot;요청 속도를 늦춰주세요&quot; 등의 제약을 걸어야만 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 문제들 때문에 강사님과 수강생 모두 100% 실습에 집중하기 어려웠습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  강의에 최적화된 웹 스크래핑 연습 플랫폼, ScrapingSteps.com&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강사님들의 고민을 해결하고, 수강생들이 마음껏 실력을 펼칠 수 있도록 설계된 교육용 웹 스크래핑 연습 사이트, &lt;b&gt;&lt;a href=&quot;https://scrapingsteps.com&quot;&gt;ScrapingSteps.com&lt;/a&gt;&lt;/b&gt;을 소개합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;&lt;a href=&quot;https://scrapingsteps.com&quot;&gt;강의 자료 검토하기 (사이트 방문)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGU40a/dJMcag43FHM/VPuGR0EylhY5md1PHkjk4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGU40a/dJMcag43FHM/VPuGR0EylhY5md1PHkjk4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGU40a/dJMcag43FHM/VPuGR0EylhY5md1PHkjk4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGU40a%2FdJMcag43FHM%2FVPuGR0EylhY5md1PHkjk4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;779&quot; height=&quot;545&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✨ ScrapingSteps.com, 강의에 이런 이점을 제공합니다.&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 100% 안전하고 자유로운 실습 환경 (Guilt-Free Teaching!)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 큰 장점입니다. ScrapingSteps.com은 오로지 교육 목적으로 만들어진 가상 환경입니다.&lt;br /&gt;법적 책임이나 IP 차단 걱정 없이, 오직 코드 로직과 기술 교육에만 집중하여 강의를 진행하실 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 변하지 않는 구조, 효율적인 강의 준비&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강의 자료를 한 번 제작하면 다음 기수에도 그대로 사용할 수 있습니다. ScrapingSteps는 실제 웹사이트와 달리 구조가 변경되지 않아, 언제나 동일한 결과를 보장하는 안정적인 실습 환경을 제공합니다. 강의 준비 시간을 획기적으로 단축하세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 커리큘럼에 최적화된 단계별 시나리오&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기초부터 고급 주제까지, 웹 스크래핑 강의에서 다루는 핵심 시나리오들을 포함하고 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기초 (Requests, BeautifulSoup):&lt;/b&gt; HTML 구조 분석, CSS Selector/XPath 연습, 테이블 데이터 추출.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중급:&lt;/b&gt; 페이지네이션(Pagination) 처리, 로그인 및 세션 유지 실습.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고급 (Selenium 또는 동적 분석):&lt;/b&gt; AJAX 요청 분석, 자바스크립트로 렌더링되는 데이터 수집, 무한 스크롤.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 설치가 필요 없는 즉각적인 접근성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별도의 로컬 서버 구축이나 복잡한 환경 설정 없이, 링크 하나만으로 모든 수강생이 즉시 실습에 참여할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  강의 활용 제안&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;라이브 코딩:&lt;/b&gt; 강사님이 특정 Step을 해결하는 과정을 시연하고, 수강생들이 따라 하도록 유도할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;과제 및 평가:&lt;/b&gt; 주차별 학습 내용에 맞는 Step을 과제로 부여하고, 데이터 추출 성공 여부로 평가할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;미니 프로젝트:&lt;/b&gt; 여러 스텝을 조합하여 종합적인 데이터 수집 프로젝트를 진행하게 할 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  이제 강의의 질을 한 단계 높여보세요!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 이상 실습 사이트를 찾아 헤매거나 불안정한 환경 때문에 스트레스 받지 마세요.&lt;br /&gt;&lt;b&gt;&lt;a href=&quot;https://scrapingsteps.com&quot;&gt;ScrapingSteps.com&lt;/a&gt;&lt;/b&gt;을 통해 강사님은 더 나은 교육 콘텐츠에 집중하고, 수강생들은 마음껏 실력을 향상시킬 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강의 활용 관련 문의나 교육 기관 협력 제안, 혹은 강의에 필요한 시나리오 제안은 언제든지 환영합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://scrapingsteps.com&quot;&gt;ScrapingSteps.com 방문하고 강의에 활용하기&lt;/a&gt;&lt;/b&gt;&lt;/h3&gt;</description>
      <category>파이썬</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/45</guid>
      <comments>https://learningnote.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B0%95%EC%82%AC%EB%8B%98-%ED%95%84%EB%8F%85-%EC%A0%80%EC%9E%91%EA%B6%8C-IP-%EC%B0%A8%EB%8B%A8-%EA%B1%B1%EC%A0%95-%EC%97%86%EB%8A%94-%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%8B%A4%EC%8A%B5-%ED%99%98%EA%B2%BD%EC%9D%84-%EC%86%8C%EA%B0%9C%ED%95%A9%EB%8B%88%EB%8B%A4#entry45comment</comments>
      <pubDate>Wed, 3 Dec 2025 08:33:25 +0900</pubDate>
    </item>
    <item>
      <title>웹 스크래핑(크롤링) 하는 합법적인 방법</title>
      <link>https://learningnote.tistory.com/entry/%EC%9B%B9-%EC%8A%A4%ED%81%AC%EB%9E%98%ED%95%91%ED%81%AC%EB%A1%A4%EB%A7%81-%ED%95%98%EB%8A%94-%ED%95%A9%EB%B2%95%EC%A0%81%EC%9D%B8-%EB%B0%A9%EB%B2%95</link>
      <description>&lt;h1&gt;웹 크롤링, 어디서 연습하세요? 이제 법적 걱정 없이 마음껏 실습하세요! (ScrapingSteps.com 런칭)&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요, 개발자, 비개발자 여러분!  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 수집, 업무 자동화 등 다양한 분야에서 웹 스크래핑(크롤링)은 강력한 도구입니다. Python의 BeautifulSoup이나 Selenium, 혹은 JavaScript의 Puppeteer 같은 라이브러리 사용법은 익혔는데, 막상 실전에 적용하려니 막막했던 경험, 다들 있으실 겁니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  우리가 스크래핑을 공부할 때 겪는 어려움들&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스크래핑을 공부하다 보면 누구나 다음과 같은 고민에 부딪힙니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;연습할 만한 적당한 사이트가 없다:&lt;/b&gt; 너무 쉽거나, 반대로 너무 복잡해서 난이도에 맞는 사이트를 찾기 어렵습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사이트 구조가 자주 바뀐다:&lt;/b&gt; 열심히 코드를 짰는데 다음 날 사이트 HTML이 바뀌어 코드가 무용지물이 되곤 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;윤리적, 법적 걱정:&lt;/b&gt; '이 사이트 크롤링해도 되나?', '너무 자주 요청해서 IP 차단당하면 어떡하지?' 같은 걱정 때문에 마음껏 연습하기 어렵습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 역시 같은 고민을 했고, 이런 문제를 해결하기 위해 직접 만들었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  웹 스크래핑 연습 전용 사이트, ScrapingSteps.com을 소개합니다!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://scrapingsteps.com&quot;&gt;ScrapingSteps.com&lt;/a&gt;은 이름 그대로 웹 스크래핑 기술을 '단계별(Steps)'로 연습할 수 있도록 설계된 &lt;b&gt;안전한 가상 웹 환경&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;&lt;a href=&quot;https://scrapingsteps.com&quot;&gt;지금 바로 연습하러 가기 (클릭)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cT9LAv/dJMcabJr0sd/uOQrgHZ7uTWFLWQitsEeOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cT9LAv/dJMcabJr0sd/uOQrgHZ7uTWFLWQitsEeOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cT9LAv/dJMcabJr0sd/uOQrgHZ7uTWFLWQitsEeOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcT9LAv%2FdJMcabJr0sd%2FuOQrgHZ7uTWFLWQitsEeOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;779&quot; height=&quot;545&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✨ ScrapingSteps.com은 무엇이 특별할까요?&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 마음껏 연습하세요 (Guilt-Free!)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 큰 장점은 &lt;b&gt;안전하다&lt;/b&gt;는 것입니다. ScrapingSteps는 오로지 연습을 위해 만들어졌습니다. 법적인 문제나 IP 차단 걱정 없이 마음껏 코드를 테스트하고 수많은 요청을 보내보세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 단계별 난이도 구성 (Step-by-Step)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 기본적인 정적 페이지 크롤링부터 시작해 점차 난이도를 높여갑니다. 마치 게임의 스테이지를 클리어하듯, 단계별로 도전 과제를 해결하며 자연스럽게 실력을 향상시킬 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기초:&lt;/b&gt; HTML 구조 파악, CSS Selector 및 XPath 활용, 테이블 데이터 처리&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중급:&lt;/b&gt; 페이지네이션(Pagination) 구현, 로그인 및 세션 관리&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고급:&lt;/b&gt; 자바스크립트 기반의 동적 데이터 로딩(AJAX), 무한 스크롤 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 변하지 않는 안정적인 실습 환경&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 웹사이트는 예고 없이 구조가 변경되곤 합니다. ScrapingSteps는 일관된 구조를 유지하여 언제든 안정적으로 실습하고 코드를 재현할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt; &amp;zwj;  어떻게 사용하나요?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 언어나 라이브러리를 사용하셔도 좋습니다! (&lt;code&gt;Python&lt;/code&gt;, &lt;code&gt;JavaScript&lt;/code&gt;, &lt;code&gt;Java&lt;/code&gt; 등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 특정 스텝에서 게시판 목록을 가져오고 싶다면 다음과 같이 코드를 작성해 볼 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import requests
from bs4 import BeautifulSoup
import time

base_url = 'https://scrapingsteps.com/api/step1/pagination'
all_items = []

# 1. 첫 페이지에서 총 페이지 수 확인
response = requests.get(base_url)
soup = BeautifulSoup(response.text, 'html.parser')

# 페이지 정보 추출
info_div = soup.find('div', class_='info')
if info_div:
    # &quot;현재 페이지: 1 / 5&quot; 형식에서 총 페이지 수 추출
    page_info = info_div.find('p').text
    total_pages = int(page_info.split('/')[1].strip())

# 2. 모든 페이지 순회하며 데이터 추출
for page_num in range(1, total_pages + 1):
    url = f'{base_url}?page={page_num}'
    print(f&quot;페이지 {page_num} 스크래핑 중...&quot;)
    
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 아이템 카드 추출
    item_cards = soup.find_all('div', class_='item-card')
    
    for card in item_cards:
        item_id = card.find('span', class_='item-id').text
        item_category = card.find('span', class_='item-category').text
        item_title = card.find('h3', class_='item-title').text
        item_description = card.find('p', class_='item-description').text
        item_views = card.find('span', class_='item-views').text
        
        all_items.append({
            'id': item_id,
            'category': item_category,
            'title': item_title,
            'description': item_description,
            'views': item_views
        })
    
    # 요청 간 대기 (선택사항)
    time.sleep(0.5)

# 결과 출력
print(f&quot;\n총 페이지 수: {total_pages}&quot;)
print(f&quot;총 아이템 수: {len(all_items)}&quot;)
print(&quot;\n아이템 목록 (처음 5개):&quot;)
for item in all_items[:5]:
    print(f&quot;  - {item['title']}: {item['category']} (ID: {item['id']})&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이처럼 배운 내용을 즉시 적용하고 테스트해 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  지금 바로 도전해보세요!&lt;br /&gt;웹 스크래핑 학습의 가장 좋은 방법은 직접 부딪혀 보는 것입니다. 이제 ScrapingSteps.com에서 안전하고 즐겁게 실력을 키워보세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분의 피드백과 제안은 언제나 환영합니다. 사이트를 이용하시면서 어려운 점이나 추가되었으면 하는 시나리오가 있다면 언제든지 알려주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ScrapingSteps.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ScrapingSteps.com 방문하기&lt;/a&gt;&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/44</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%9B%B9-%EC%8A%A4%ED%81%AC%EB%9E%98%ED%95%91%ED%81%AC%EB%A1%A4%EB%A7%81-%ED%95%98%EB%8A%94-%ED%95%A9%EB%B2%95%EC%A0%81%EC%9D%B8-%EB%B0%A9%EB%B2%95#entry44comment</comments>
      <pubDate>Tue, 2 Dec 2025 20:12:26 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 독학 - 설치알못부터 마스터까지</title>
      <link>https://learningnote.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%8F%85%ED%95%99-%EC%84%A4%EC%B9%98%EC%95%8C%EB%AA%BB%EB%B6%80%ED%84%B0-%EB%A7%88%EC%8A%A4%ED%84%B0%EA%B9%8C%EC%A7%80</link>
      <description>&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;파이썬&amp;nbsp;독학&amp;nbsp;-&amp;nbsp;설치알못부터&amp;nbsp;마스터까지&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;예제와 퀴즈 중심으로 구성되어 있는 파이썬 서적입니다.&lt;br&gt;&lt;br&gt;예제와&amp;nbsp;풀이&amp;nbsp;및&amp;nbsp;실행&amp;nbsp;결과를&amp;nbsp;바탕으로,&amp;nbsp;원리와&amp;nbsp;인과관계를&amp;nbsp;유추하면서&amp;nbsp;능동적으로&amp;nbsp;공부해보시기를&amp;nbsp;권장합니다. &lt;br&gt;&lt;br&gt;풀이와&amp;nbsp;실행&amp;nbsp;결과는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;펼치기/접기&amp;nbsp;토글&amp;nbsp;방식으로&amp;nbsp;되어&amp;nbsp;있습니다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wmo4F/btr9NokIMRT/b7JbJQMpnteXek9tgsiwh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wmo4F/btr9NokIMRT/b7JbJQMpnteXek9tgsiwh0/img.png&quot; data-alt=&quot;샘플 예제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wmo4F/btr9NokIMRT/b7JbJQMpnteXek9tgsiwh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWmo4F%2Fbtr9NokIMRT%2Fb7JbJQMpnteXek9tgsiwh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;861&quot; height=&quot;381&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;샘플 예제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;a href=&quot;https://wikidocs.net/book/9396&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://wikidocs.net/book/9396&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;파이썬 독학 - 설치알못부터 마스터까지&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;이 책은 예제와 퀴즈 중심으로 구성되어 있습니다. 예제와 풀이 및 실행 결과를 바탕으로, 원리와 인과관계를 유추하면서 능동적으로 공부해보시기를 권장합니다. 풀이와 실행…&quot; data-og-host=&quot;wikidocs.net&quot; data-og-source-url=&quot;https://wikidocs.net/book/9396&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/3YKUk/hySe3KR8Oo/RiZppdXptULLNlKc7vfXP0/img.png?width=100&amp;amp;height=130&amp;amp;face=0_0_100_130&quot; data-og-url=&quot;https://wikidocs.net/book/9396&quot;&gt;&lt;a href=&quot;https://wikidocs.net/book/9396&quot; target=&quot;_blank&quot; data-source-url=&quot;https://wikidocs.net/book/9396&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/3YKUk/hySe3KR8Oo/RiZppdXptULLNlKc7vfXP0/img.png?width=100&amp;amp;height=130&amp;amp;face=0_0_100_130')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;파이썬 독학 - 설치알못부터 마스터까지&lt;/p&gt;&lt;p class=&quot;og-desc&quot;&gt;이 책은 예제와 퀴즈 중심으로 구성되어 있습니다. 예제와 풀이 및 실행 결과를 바탕으로, 원리와 인과관계를 유추하면서 능동적으로 공부해보시기를 권장합니다. 풀이와 실행…&lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;wikidocs.net&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/40</guid>
      <comments>https://learningnote.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%8F%85%ED%95%99-%EC%84%A4%EC%B9%98%EC%95%8C%EB%AA%BB%EB%B6%80%ED%84%B0-%EB%A7%88%EC%8A%A4%ED%84%B0%EA%B9%8C%EC%A7%80#entry40comment</comments>
      <pubDate>Tue, 11 Apr 2023 15:33:32 +0900</pubDate>
    </item>
    <item>
      <title>Mechanical Scraper - 웹 스크래핑을 쉽고 빠르게 도와주는 파이썬 라이브러리</title>
      <link>https://learningnote.tistory.com/entry/Mechanical-Scraper-%EC%9B%B9-%EC%8A%A4%ED%81%AC%EB%9E%98%ED%95%91%EC%9D%84-%EC%89%BD%EA%B3%A0-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EB%8F%84%EC%99%80%EC%A3%BC%EB%8A%94-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Mechanical Scraper - 웹 스크래핑을 쉽고 빠르게 도와주는 파이썬 라이브러리&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 스크래핑(크롤링) 개발을 쉽게 해주는 파이썬 라이브러리입니다.&lt;/li&gt;
&lt;li&gt;requests 와 bs4.BeautifulSoup 를 이용한 개발 시간을 단축시켜 드립니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HTTP Request 코드 생성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Fiddler 와 같은 도구를 통해 얻은 HTTP 메시지를 복사&amp;amp;붙여넣기 하면 요청 코드를 자동으로 생성해줍니다.&lt;/li&gt;
&lt;li&gt;GET/POST Method 에 따라, 그리고 Content-Type에 따라 적절한 코드가 자동으로 적용됩니다.&lt;/li&gt;
&lt;li&gt;세션을 자동으로 유지 및 업데이트해줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Selector 도우미&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 응답에 대해 자동으로 브라우저가 팝업되므로, 손쉽게 개발자 도구를 통해 Copy Selector 기능을 사용할 수 있게 됩니다.&lt;/li&gt;
&lt;li&gt;파싱을 위해 눈 아프고 머리 아프게 고민하지 않으셔도 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;라이브러리 다운로드&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/wsder31/mechanical_scraper&quot;&gt;https://github.com/wsder31/mechanical_scraper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1680963395934&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - wsder31/mechanical_scraper: Mechanical Scraper - Web Scraping Easily&quot; data-og-description=&quot;Mechanical Scraper - Web Scraping Easily. Contribute to wsder31/mechanical_scraper development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/wsder31/mechanical_scraper&quot; data-og-url=&quot;https://github.com/wsder31/mechanical_scraper&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bJDEzA/hySdxjczkk/ivdKdkR0B2lVzQ3K8r2cC1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/wsder31/mechanical_scraper&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/wsder31/mechanical_scraper&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bJDEzA/hySdxjczkk/ivdKdkR0B2lVzQ3K8r2cC1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - wsder31/mechanical_scraper: Mechanical Scraper - Web Scraping Easily&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Mechanical Scraper - Web Scraping Easily. Contribute to wsder31/mechanical_scraper development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용법 가이드&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/ft2bzuLVfPs&quot;&gt;https://youtu.be/ft2bzuLVfPs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=ft2bzuLVfPs&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dFPN0W/hySdriZG0I/etVKje6cv4AzAvkkvmkSjk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=612_376_760_536&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/ft2bzuLVfPs&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;동영상 내용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요.&amp;nbsp;웹&amp;nbsp;스크래핑&amp;nbsp;개발시&amp;nbsp;단순&amp;nbsp;반복되는&amp;nbsp;작업을&amp;nbsp;편리하게&amp;nbsp;수행할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;Mechanical&amp;nbsp;Scraper&amp;nbsp;라는&amp;nbsp;파이썬&amp;nbsp;라이브러리를&amp;nbsp;소개해드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬&amp;nbsp;웹&amp;nbsp;스크래핑하면&amp;nbsp;빠질&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;라이브러리가&amp;nbsp;requests&amp;nbsp;와&amp;nbsp;beatifulsoup&amp;nbsp;입니다.&amp;nbsp;이&amp;nbsp;두&amp;nbsp;가지를&amp;nbsp;한번이라도&amp;nbsp;사용해보신&amp;nbsp;분들을&amp;nbsp;대상으로&amp;nbsp;한&amp;nbsp;영상이니&amp;nbsp;참고하시기&amp;nbsp;바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mechanical&amp;nbsp;Scraper&amp;nbsp;의&amp;nbsp;주요&amp;nbsp;기능&lt;/b&gt;을&amp;nbsp;간단히&amp;nbsp;먼저&amp;nbsp;설명드리겠습니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;첫&amp;nbsp;번째,&amp;nbsp;HTTP&amp;nbsp;Request&amp;nbsp;코드&amp;nbsp;자동&amp;nbsp;생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;HTTP Message 전문을 복사해서 넣고 버튼 하나만 눌러주면, GET/POST Method 에 따라, 그리고 Content-Type 에 따라 알맞는 코드를 생성해줍니다. 게다가 Session 도 알아서 유지 및 업데이트해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;742&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Eljj4/btr8NDChS7c/HaCx6unQ1s7QFICBLoBncK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Eljj4/btr8NDChS7c/HaCx6unQ1s7QFICBLoBncK/img.png&quot; data-alt=&quot;HTTP Request 코드 자동 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Eljj4/btr8NDChS7c/HaCx6unQ1s7QFICBLoBncK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEljj4%2Fbtr8NDChS7c%2FHaCx6unQ1s7QFICBLoBncK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;742&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;742&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;HTTP Request 코드 자동 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;두&amp;nbsp;번째,&amp;nbsp;Selector&amp;nbsp;Assistant&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;HTTP&amp;nbsp;Request&amp;nbsp;후&amp;nbsp;받은&amp;nbsp;HTML&amp;nbsp;로부터&amp;nbsp;특정&amp;nbsp;값을&amp;nbsp;파싱하여&amp;nbsp;가져와야&amp;nbsp;하는&amp;nbsp;경우가&amp;nbsp;많습니다.&amp;nbsp;아시는&amp;nbsp;분들은&amp;nbsp;이미&amp;nbsp;아시겠지만,&amp;nbsp;이&amp;nbsp;때,&amp;nbsp;브라우저의&amp;nbsp;개발자도구를&amp;nbsp;통해&amp;nbsp;Copy&amp;nbsp;Selector&amp;nbsp;기능을&amp;nbsp;사용하면&amp;nbsp;아주&amp;nbsp;쉽습니다. &lt;br /&gt;&lt;br /&gt;Selector&amp;nbsp;Assistant&amp;nbsp;는&amp;nbsp;response&amp;nbsp;로&amp;nbsp;받은&amp;nbsp;HTML&amp;nbsp;문서를&amp;nbsp;그대로&amp;nbsp;브라우저에&amp;nbsp;띄워주는&amp;nbsp;기능입니다.&amp;nbsp;그러면&amp;nbsp;파싱을&amp;nbsp;위해&amp;nbsp;눈&amp;nbsp;아프고&amp;nbsp;머리&amp;nbsp;아프게&amp;nbsp;고민하지&amp;nbsp;않으셔도&amp;nbsp;됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;739&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bx1O1O/btr8LN6ARnF/usE7zdzE4j90gNwuXcRyc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bx1O1O/btr8LN6ARnF/usE7zdzE4j90gNwuXcRyc0/img.png&quot; data-alt=&quot;Selector Assistant&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bx1O1O/btr8LN6ARnF/usE7zdzE4j90gNwuXcRyc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx1O1O%2Fbtr8LN6ARnF%2FusE7zdzE4j90gNwuXcRyc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;928&quot; height=&quot;739&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;739&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Selector Assistant&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;그럼,&amp;nbsp;이제&amp;nbsp;본격적으로&amp;nbsp;&lt;b&gt;각&amp;nbsp;기능에&amp;nbsp;대한&amp;nbsp;사용법&lt;/b&gt;을&amp;nbsp;설명드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;첫 번째, HTTP Request 코드 자동 생성 기능&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;편의성을 위해 바이너리 파일로 릴리즈 된 파일을 다운로드하겠습니다.&lt;br /&gt;다운로드가 완료되었으면 실행해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;742&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mnMD3/btr8KH6Mr22/CyLAb2En7kI5vaVdCGFq8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mnMD3/btr8KH6Mr22/CyLAb2En7kI5vaVdCGFq8K/img.png&quot; data-alt=&quot;릴리즈 된 바이너리 파일 다운로드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mnMD3/btr8KH6Mr22/CyLAb2En7kI5vaVdCGFq8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmnMD3%2Fbtr8KH6Mr22%2FCyLAb2En7kI5vaVdCGFq8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;926&quot; height=&quot;742&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;742&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;릴리즈 된 바이너리 파일 다운로드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면 설명을 간단히 드리겠습니다.&lt;br /&gt;가장 위쪽의 텍스트 박스를 통해 HTTP Headers 중에 필요한 것들만 필터링할 수 있습니다.&lt;br /&gt;중간에 있는 텍스트 박스는 HTTP Message 를 입력하는 영역입니다.&lt;br /&gt;HTTP&amp;nbsp;Message&amp;nbsp;를&amp;nbsp;입력&amp;nbsp;한&amp;nbsp;후,&amp;nbsp;바로&amp;nbsp;아래에&amp;nbsp;있는&amp;nbsp;버튼을&amp;nbsp;누르면&amp;nbsp;그것에&amp;nbsp;맞는&amp;nbsp;코드가&amp;nbsp;자동으로&amp;nbsp;생성&amp;nbsp;됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmdRdG/btr8MrB7fOG/zBFyAxHgFP3pJhBAFmK5A0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmdRdG/btr8MrB7fOG/zBFyAxHgFP3pJhBAFmK5A0/img.png&quot; data-alt=&quot;화면 설명&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmdRdG/btr8MrB7fOG/zBFyAxHgFP3pJhBAFmK5A0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmdRdG%2Fbtr8MrB7fOG%2FzBFyAxHgFP3pJhBAFmK5A0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1002&quot; height=&quot;752&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;화면 설명&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;예시로&amp;nbsp;한번&amp;nbsp;보여드리겠습니다. &lt;br /&gt;&lt;br /&gt;Fiddler&amp;nbsp;를&amp;nbsp;통해&amp;nbsp;HTTP&amp;nbsp;전문을&amp;nbsp;복사합니다. &lt;br /&gt;Mechanical&amp;nbsp;Scraper&amp;nbsp;에&amp;nbsp;붙여넣고&amp;nbsp;버튼을&amp;nbsp;누릅니다. &lt;br /&gt;코드가 자동으로 생성되었습니다.&lt;br /&gt;간단하죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvuy2q/btr8LMzKoqY/aTZC9HwkldcyRnliBT3cXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvuy2q/btr8LMzKoqY/aTZC9HwkldcyRnliBT3cXK/img.png&quot; data-alt=&quot;코드 자동 생성 기능 사용법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvuy2q/btr8LMzKoqY/aTZC9HwkldcyRnliBT3cXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcvuy2q%2Fbtr8LMzKoqY%2FaTZC9HwkldcyRnliBT3cXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;코드 자동 생성 기능 사용법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;두&amp;nbsp;번째,&amp;nbsp;Selector&amp;nbsp;Assistant&amp;nbsp;입니다.&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;이 기능을 이용하시려면 파이썬 코드를 받으셔야 합니다.&lt;br /&gt;깃허브&amp;nbsp;레파지토리로부터&amp;nbsp;소스코드를&amp;nbsp;받으시면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;747&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I4Wah/btr8Mo6yNGJ/rP2nV0lDgeojwFgRwRzfik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I4Wah/btr8Mo6yNGJ/rP2nV0lDgeojwFgRwRzfik/img.png&quot; data-alt=&quot;라이브러리 소스 코드 다운로드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I4Wah/btr8Mo6yNGJ/rP2nV0lDgeojwFgRwRzfik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI4Wah%2Fbtr8Mo6yNGJ%2FrP2nV0lDgeojwFgRwRzfik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;747&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;라이브러리 소스 코드 다운로드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;이제,&amp;nbsp;짧게&amp;nbsp;샘플&amp;nbsp;코드를&amp;nbsp;작성해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;a href=&quot;http://toscrape.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://toscrape.com&lt;/a&gt; 이라는&amp;nbsp;사이트에&amp;nbsp;접속합니다.&lt;br /&gt;웹 스크래핑 연습용 사이트입니다.&lt;br /&gt;현재&amp;nbsp;두&amp;nbsp;가지가&amp;nbsp;제공되고&amp;nbsp;있는데,&amp;nbsp;우리는&amp;nbsp;아래에&amp;nbsp;있는&amp;nbsp;명언에&amp;nbsp;대한&amp;nbsp;내용을&amp;nbsp;스크래핑하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pcLd7/btr8Lisax71/52XfOFqqX4b5DtAk8sXtMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pcLd7/btr8Lisax71/52XfOFqqX4b5DtAk8sXtMK/img.png&quot; data-alt=&quot;toscrape.com 사이트 내 명언 페이지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pcLd7/btr8Lisax71/52XfOFqqX4b5DtAk8sXtMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpcLd7%2Fbtr8Lisax71%2F52XfOFqqX4b5DtAk8sXtMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;929&quot; height=&quot;745&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;745&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;toscrape.com 사이트 내 명언 페이지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;무엇을&amp;nbsp;스크래핑할&amp;nbsp;지&amp;nbsp;보여드린&amp;nbsp;후에,&amp;nbsp;코드를&amp;nbsp;작성하겠습니다. &lt;br /&gt;&lt;br /&gt;명언&amp;nbsp;페이지에&amp;nbsp;접속합니다. &lt;br /&gt;로그인&amp;nbsp;페이지로&amp;nbsp;이동합니다. &lt;br /&gt;username 과 password 를 입력하고 Login 버튼을 클릭합니다.&lt;br /&gt;로그인 된 것이 보이시죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이후에는 간단하게 글귀와 글쓴이만 스크래핑하고 마치겠습니다.&lt;br /&gt;명언&amp;nbsp;페이지는&amp;nbsp;다시&amp;nbsp;로그아웃하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;739&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/shLlc/btr8ZVvidDd/beLk54bWPVOPnNUb22HLzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/shLlc/btr8ZVvidDd/beLk54bWPVOPnNUb22HLzK/img.png&quot; data-alt=&quot;로그인 된 상태의 명언 페이지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/shLlc/btr8ZVvidDd/beLk54bWPVOPnNUb22HLzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FshLlc%2Fbtr8ZVvidDd%2FbeLk54bWPVOPnNUb22HLzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;926&quot; height=&quot;739&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;739&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;로그인 된 상태의 명언 페이지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;이제,&amp;nbsp;앞의&amp;nbsp;과정에&amp;nbsp;대한&amp;nbsp;HTTP&amp;nbsp;패킷을&amp;nbsp;캡처하겠습니다. &lt;br /&gt;&lt;br /&gt;Fiddler&amp;nbsp;를&amp;nbsp;실행합니다. &lt;br /&gt;File 메뉴에서 Capture Traffic 을 켭니다.&lt;br /&gt;이제&amp;nbsp;캡처&amp;nbsp;과정을&amp;nbsp;보여드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bw7sL/btr8LOj9cuE/qlx40LK4mS3fUY0yRKQ7e0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bw7sL/btr8LOj9cuE/qlx40LK4mS3fUY0yRKQ7e0/img.png&quot; data-alt=&quot;HTTP 패킷 캡쳐 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bw7sL/btr8LOj9cuE/qlx40LK4mS3fUY0yRKQ7e0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBw7sL%2Fbtr8LOj9cuE%2Fqlx40LK4mS3fUY0yRKQ7e0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;745&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;745&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;HTTP 패킷 캡쳐 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VSCode 를 열어봅니다.&lt;br /&gt;파일을&amp;nbsp;하나&amp;nbsp;만들게요. &lt;br /&gt;저는&amp;nbsp;test.py&amp;nbsp;로&amp;nbsp;하겠습니다. &lt;br /&gt;&lt;br /&gt;스크래핑은 경험이 쌓이다보면 자연스럽게 알게 되겠지만, 캡처한 모든 과정을 코드로 작성할 필요는 없습니다.&lt;br /&gt;여기서는&amp;nbsp;사용법을&amp;nbsp;알려드리기&amp;nbsp;위한&amp;nbsp;것이므로,&amp;nbsp;get&amp;nbsp;과&amp;nbsp;post&amp;nbsp;메서드로&amp;nbsp;된&amp;nbsp;모든&amp;nbsp;과정을&amp;nbsp;밟아보겠습니다. &lt;br /&gt;&lt;br /&gt;메인&amp;nbsp;페이지&amp;nbsp;이동하는&amp;nbsp;것부터&amp;nbsp;시작합니다. &lt;br /&gt;&lt;br /&gt;해당 패킷을 선택한 후, Inspectors 의 Raw 탭을 활성화 합니다.&lt;br /&gt;메시지를 전체 복사합니다.&lt;br /&gt;Mechanical Scraper, 앞으로는 줄여서 MS 라고 하겠습니다.&lt;br /&gt;MS 에 붙여넣고 버튼을 클릭합니다.&lt;br /&gt;결과물을&amp;nbsp;복사하여&amp;nbsp;VSCode&amp;nbsp;에&amp;nbsp;다시&amp;nbsp;붙여넣기합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;727&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqBdvC/btr8JoNnqqG/EJykdmnJQ7a6SIde3c1eS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqBdvC/btr8JoNnqqG/EJykdmnJQ7a6SIde3c1eS1/img.png&quot; data-alt=&quot;메인 페이지 요청 메시지 복사&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqBdvC/btr8JoNnqqG/EJykdmnJQ7a6SIde3c1eS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqBdvC%2Fbtr8JoNnqqG%2FEJykdmnJQ7a6SIde3c1eS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;911&quot; height=&quot;727&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;727&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;메인 페이지 요청 메시지 복사&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;729&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VUOYh/btr8OWV1fyH/A85Hd3lKIt8UWj7oaDY7H1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VUOYh/btr8OWV1fyH/A85Hd3lKIt8UWj7oaDY7H1/img.png&quot; data-alt=&quot;Mechanical Scraper 를 통해 Request 코드 자동 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VUOYh/btr8OWV1fyH/A85Hd3lKIt8UWj7oaDY7H1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVUOYh%2Fbtr8OWV1fyH%2FA85Hd3lKIt8UWj7oaDY7H1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;911&quot; height=&quot;729&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;729&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Mechanical Scraper 를 통해 Request 코드 자동 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;바로 실행해보겠습니다.&lt;br /&gt;response.text&amp;nbsp;가&amp;nbsp;fiddler&amp;nbsp;에서&amp;nbsp;봤던&amp;nbsp;response&amp;nbsp;값과&amp;nbsp;동일한&amp;nbsp;것을&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;제대로&amp;nbsp;코드가&amp;nbsp;작성된&amp;nbsp;것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;731&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxj00W/btr8LsBFOWK/EmuLJUtE9AuwBjSGK6NvM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxj00W/btr8LsBFOWK/EmuLJUtE9AuwBjSGK6NvM0/img.png&quot; data-alt=&quot;자동 생성된 코드를 붙여넣은 후 실행 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxj00W/btr8LsBFOWK/EmuLJUtE9AuwBjSGK6NvM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbxj00W%2Fbtr8LsBFOWK%2FEmuLJUtE9AuwBjSGK6NvM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;912&quot; height=&quot;731&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;731&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;자동 생성된 코드를 붙여넣은 후 실행 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;다음은&amp;nbsp;login&amp;nbsp;페이지&amp;nbsp;이동입니다.&amp;nbsp;기계적으로,&amp;nbsp;마찬가지&amp;nbsp;과정을&amp;nbsp;거치면&amp;nbsp;됩니다. &lt;br /&gt;&lt;br /&gt;Fiddler 에서 해당 패킷의 메시지 전체를 복사합니다.&lt;br /&gt;MS 에 붙여넣고 버튼을 클릭합니다.&lt;br /&gt;결과물을 복사하여 VSCode 에 다시 붙여넣기합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;실행해보겠습니다.&lt;br /&gt;response&amp;nbsp;가&amp;nbsp;잘&amp;nbsp;들어왔습니다.&amp;nbsp;그런데&amp;nbsp;정돈되지&amp;nbsp;않은&amp;nbsp;HTML&amp;nbsp;문자열이라&amp;nbsp;눈으로&amp;nbsp;잘&amp;nbsp;보이지&amp;nbsp;않죠?&amp;nbsp;그래서&amp;nbsp;Selector&amp;nbsp;Assistant&amp;nbsp;의&amp;nbsp;도움을&amp;nbsp;받아보겠습니다. &lt;br /&gt;&lt;br /&gt;ms.get 메서드의 두 번째 인자에 True 값을 넣고 다시 실행합니다.&lt;br /&gt;자동으로 브라우저가 열립니다.&lt;br /&gt;CSS&amp;nbsp;가&amp;nbsp;적용되지&amp;nbsp;않는&amp;nbsp;경우도&amp;nbsp;있으므로,&amp;nbsp;실제&amp;nbsp;페이지와는&amp;nbsp;스타일이&amp;nbsp;좀&amp;nbsp;다를&amp;nbsp;수&amp;nbsp;있지만&amp;nbsp;필요한&amp;nbsp;정보는&amp;nbsp;여기서&amp;nbsp;충분히&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ukDSx/btr8Mpj6K6Z/60kQxOJiBGkOGU5NkNaTk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ukDSx/btr8Mpj6K6Z/60kQxOJiBGkOGU5NkNaTk1/img.png&quot; data-alt=&quot;get 메서드의 두 번째 인자에 True 값을 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ukDSx/btr8Mpj6K6Z/60kQxOJiBGkOGU5NkNaTk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FukDSx%2Fbtr8Mpj6K6Z%2F60kQxOJiBGkOGU5NkNaTk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;910&quot; height=&quot;732&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;732&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;get 메서드의 두 번째 인자에 True 값을 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1Fipn/btr8Lr3PsQb/q14yRkz6Bszo7ZwnyXnLVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1Fipn/btr8Lr3PsQb/q14yRkz6Bszo7ZwnyXnLVk/img.png&quot; data-alt=&quot;Selector Assistant 에 의해 자동으로 브라우저가 팝업된 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1Fipn/btr8Lr3PsQb/q14yRkz6Bszo7ZwnyXnLVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1Fipn%2Fbtr8Lr3PsQb%2Fq14yRkz6Bszo7ZwnyXnLVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;907&quot; height=&quot;730&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Selector Assistant 에 의해 자동으로 브라우저가 팝업된 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;로그인&amp;nbsp;페이지&amp;nbsp;이동한&amp;nbsp;것이&amp;nbsp;확인되었으니,&amp;nbsp;다음&amp;nbsp;과정으로&amp;nbsp;넘어가겠습니다. &lt;br /&gt;&lt;br /&gt;로그인 페이지에 대한 HTML 은 매번 브라우저에 띄울 필요 없으니, 두 번째 인자는 주석 처리 하겠습니다.&lt;br /&gt;과정도&amp;nbsp;많아지니&amp;nbsp;중간&amp;nbsp;중간에&amp;nbsp;설명도&amp;nbsp;달아놓으면&amp;nbsp;좋겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제,&amp;nbsp;Fiddler&amp;nbsp;에서&amp;nbsp;로그인&amp;nbsp;패킷을&amp;nbsp;선택합니다. &lt;br /&gt;이번엔&amp;nbsp;POST&amp;nbsp;메서드네요.&amp;nbsp;하지만&amp;nbsp;우리는&amp;nbsp;생각할&amp;nbsp;필요&amp;nbsp;없이,&amp;nbsp;기계적으로&amp;nbsp;복사&amp;amp;붙여넣기&amp;nbsp;하면&amp;nbsp;됩니다. &lt;br /&gt;&lt;br /&gt;post&amp;nbsp;메서드에도&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;메서드를&amp;nbsp;True&amp;nbsp;로&amp;nbsp;해보겠습니다. &lt;br /&gt;&lt;br /&gt;실행합니다.&lt;br /&gt;페이지가&amp;nbsp;뜨긴&amp;nbsp;떴는데,&amp;nbsp;좀&amp;nbsp;이상하지&amp;nbsp;않나요? &lt;br /&gt;자세히 보시면 화면에 Error 메시지가 있습니다.&lt;br /&gt;CSRF&amp;nbsp;token&amp;nbsp;이&amp;nbsp;유효하지&amp;nbsp;않다네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;539&quot; data-origin-height=&quot;399&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNlcAI/btr8KJRbtPm/dl8Hoy2VbmwFzi2TbR3kHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNlcAI/btr8KJRbtPm/dl8Hoy2VbmwFzi2TbR3kHk/img.png&quot; data-alt=&quot;CSRF 토큰이 유효하지 않다는 오류 메시지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNlcAI/btr8KJRbtPm/dl8Hoy2VbmwFzi2TbR3kHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNlcAI%2Fbtr8KJRbtPm%2Fdl8Hoy2VbmwFzi2TbR3kHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;539&quot; height=&quot;399&quot; data-origin-width=&quot;539&quot; data-origin-height=&quot;399&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CSRF 토큰이 유효하지 않다는 오류 메시지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;코드를 살펴볼게요.&lt;br /&gt;username&amp;nbsp;과&amp;nbsp;password&amp;nbsp;는&amp;nbsp;우리가&amp;nbsp;입력한&amp;nbsp;값&amp;nbsp;그대로인데,&amp;nbsp;csrf_token&amp;nbsp;값은&amp;nbsp;이상한&amp;nbsp;문자열이&amp;nbsp;들어가&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;725&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E4SFu/btr8LiyWvU3/F1fMHc6k0DVkKJJSzM0kq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E4SFu/btr8LiyWvU3/F1fMHc6k0DVkKJJSzM0kq1/img.png&quot; data-alt=&quot;csrf_token 와 username 및 password&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E4SFu/btr8LiyWvU3/F1fMHc6k0DVkKJJSzM0kq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE4SFu%2Fbtr8LiyWvU3%2FF1fMHc6k0DVkKJJSzM0kq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;910&quot; height=&quot;725&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;725&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;csrf_token 와 username 및 password&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;처음&amp;nbsp;해보시는&amp;nbsp;분들은&amp;nbsp;당황스러우실&amp;nbsp;수&amp;nbsp;있으나,&amp;nbsp;간단합니다. &lt;br /&gt;해당 토큰값을 복사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Fiddler 에서 Ctrl + F 를 눌러 검색해봅니다.&lt;br /&gt;노란색으로 하이라이트 처리되어 있는 것들이 방금 검색한 값이 있는 패킷들입니다.&lt;br /&gt;우리가 필요한 토큰값은 바로 위에 login page 로 이동했을 때 받은 패킷에 존재하는 것을 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ogJkd/btr8KG7SpA3/bbWPKuKbxfm26ojdtxxmBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ogJkd/btr8KG7SpA3/bbWPKuKbxfm26ojdtxxmBK/img.png&quot; data-alt=&quot;csrf_token 값 검색 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ogJkd/btr8KG7SpA3/bbWPKuKbxfm26ojdtxxmBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FogJkd%2Fbtr8KG7SpA3%2FbbWPKuKbxfm26ojdtxxmBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;909&quot; height=&quot;224&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;224&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;csrf_token 값 검색 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;그럼&amp;nbsp;로그인&amp;nbsp;페이지에서&amp;nbsp;토큰값을&amp;nbsp;파싱해오겠습니다. &lt;br /&gt;&lt;br /&gt;response&amp;nbsp;영역에서&amp;nbsp;토큰값을&amp;nbsp;검색해봅니다. &lt;br /&gt;input&amp;nbsp;태그&amp;nbsp;안에&amp;nbsp;있군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;731&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cspcND/btr8T47hVsw/melgTzfIWEZV85sFlhJp90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cspcND/btr8T47hVsw/melgTzfIWEZV85sFlhJp90/img.png&quot; data-alt=&quot;Response 로부터 파싱 대상 검색&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cspcND/btr8T47hVsw/melgTzfIWEZV85sFlhJp90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcspcND%2Fbtr8T47hVsw%2FmelgTzfIWEZV85sFlhJp90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;909&quot; height=&quot;731&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;731&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Response 로부터 파싱 대상 검색&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;Selector Assistant 를 불러보도록 하죠.&lt;br /&gt;로그인&amp;nbsp;페이지에&amp;nbsp;대한&amp;nbsp;get&amp;nbsp;메서드에서&amp;nbsp;아까&amp;nbsp;주석처리했던&amp;nbsp;True&amp;nbsp;값을&amp;nbsp;다시&amp;nbsp;살려야겠네요. &lt;br /&gt;&lt;br /&gt;실행합니다.&lt;br /&gt;개발자&amp;nbsp;도구를&amp;nbsp;띄웁니다.&amp;nbsp;F12&amp;nbsp;키를&amp;nbsp;누른&amp;nbsp;후&amp;nbsp;Elements&amp;nbsp;탭을&amp;nbsp;활성화해도&amp;nbsp;되고,&amp;nbsp;Ctrl&amp;nbsp;+&amp;nbsp;Shift&amp;nbsp;+&amp;nbsp;C&amp;nbsp;키를&amp;nbsp;눌러&amp;nbsp;바로&amp;nbsp;Elements&amp;nbsp;탭을&amp;nbsp;띄워도&amp;nbsp;됩니다. &lt;br /&gt;&lt;br /&gt;Elements 탭의 빈 곳을 한번 클릭한 후 Ctrl + F 를 눌러 검색창을 엽니다.&lt;br /&gt;아까&amp;nbsp;복사한&amp;nbsp;토큰값을&amp;nbsp;붙여넣기합니다. &lt;br /&gt;&lt;br /&gt;나오지&amp;nbsp;않는&amp;nbsp;군요.&amp;nbsp;왜냐하면&amp;nbsp;토큰값이&amp;nbsp;매번&amp;nbsp;바뀌기&amp;nbsp;때문입니다.&amp;nbsp;다시&amp;nbsp;캡쳐하셔도&amp;nbsp;되지만,&amp;nbsp;우리는&amp;nbsp;csrf_token&amp;nbsp;이라는&amp;nbsp;키워드를&amp;nbsp;알기&amp;nbsp;때문에&amp;nbsp;굳이&amp;nbsp;다시&amp;nbsp;캡처할&amp;nbsp;필요&amp;nbsp;없이&amp;nbsp;csrf_token&amp;nbsp;으로&amp;nbsp;검색하겠습니다. &lt;br /&gt;&lt;br /&gt;해당 요소에서 마우스 우클릭 - Copy - Copy Selector 를 선택합니다.&lt;br /&gt;검색창에&amp;nbsp;붙여넣기&amp;nbsp;해보겠습니다. &lt;br /&gt;잘&amp;nbsp;찾아주네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;744&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDPaCW/btr8UVbirQ6/dlcrONrodyv18hkEIKg1z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDPaCW/btr8UVbirQ6/dlcrONrodyv18hkEIKg1z0/img.png&quot; data-alt=&quot;Eelements 탭에서 csrf_token 검색 후 Selector Copy&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDPaCW/btr8UVbirQ6/dlcrONrodyv18hkEIKg1z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDPaCW%2Fbtr8UVbirQ6%2FdlcrONrodyv18hkEIKg1z0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;931&quot; height=&quot;744&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;744&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Eelements 탭에서 csrf_token 검색 후 Selector Copy&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;파싱 코드를 작성하겠습니다.&lt;br /&gt;파싱은&amp;nbsp;BeautifulSoup&amp;nbsp;를&amp;nbsp;사용하면&amp;nbsp;편리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기까지&amp;nbsp;작성하고&amp;nbsp;토큰값이&amp;nbsp;잘&amp;nbsp;들어오는지&amp;nbsp;검토해보겠습니다. &lt;br /&gt;잘&amp;nbsp;들어오네요. &lt;br /&gt;&lt;br /&gt;이어서&amp;nbsp;로그인&amp;nbsp;처리를&amp;nbsp;해보겠습니다. &lt;br /&gt;&lt;br /&gt;그래도&amp;nbsp;토큰&amp;nbsp;오류가&amp;nbsp;발생합니다. &lt;br /&gt;다시&amp;nbsp;코드를&amp;nbsp;보겠습니다. &lt;br /&gt;&lt;br /&gt;아,&amp;nbsp;우리가&amp;nbsp;얻은&amp;nbsp;토큰&amp;nbsp;값을&amp;nbsp;적용시키지&amp;nbsp;않았네요. &lt;br /&gt;하드코딩된&amp;nbsp;값을&amp;nbsp;위에서&amp;nbsp;지정한&amp;nbsp;변수로&amp;nbsp;대체합니다. &lt;br /&gt;&lt;br /&gt;다시&amp;nbsp;실행합니다. &lt;br /&gt;로그인&amp;nbsp;페이지&amp;nbsp;이동에&amp;nbsp;대한&amp;nbsp;과정은&amp;nbsp;Selector&amp;nbsp;Assistant&amp;nbsp;를&amp;nbsp;끄겠습니다. &lt;br /&gt;&lt;br /&gt;로그인이&amp;nbsp;잘&amp;nbsp;처리되었습니다. &lt;br /&gt;로그아웃&amp;nbsp;링크도&amp;nbsp;잘&amp;nbsp;보이고&amp;nbsp;글귀와&amp;nbsp;글쓴이도&amp;nbsp;잘&amp;nbsp;보입니다.&amp;nbsp;다만,&amp;nbsp;아까&amp;nbsp;말씀드린&amp;nbsp;것과&amp;nbsp;같이&amp;nbsp;스타일은&amp;nbsp;적용되지&amp;nbsp;않을&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;728&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wzo9x/btr8ZWgE4RR/k9xastbZBpIBwaadIvAQ10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wzo9x/btr8ZWgE4RR/k9xastbZBpIBwaadIvAQ10/img.png&quot; data-alt=&quot;코드를 통해 명언 페이지에 로그인한 결과 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wzo9x/btr8ZWgE4RR/k9xastbZBpIBwaadIvAQ10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWzo9x%2Fbtr8ZWgE4RR%2Fk9xastbZBpIBwaadIvAQ10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;909&quot; height=&quot;728&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;728&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;코드를 통해 명언 페이지에 로그인한 결과 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;그럼 이제 마지막 과정인 글귀와 글쓴이 파싱만 남았습니다.&lt;br /&gt;앞의&amp;nbsp;과정과&amp;nbsp;똑같습니다.&amp;nbsp;기계적으로&amp;nbsp;하시면&amp;nbsp;됩니다. &lt;br /&gt;&lt;br /&gt;Fiddler 에서 해당 패킷의 메시지 전체를 복사합니다.&lt;br /&gt;MS 에 붙여넣고 버튼을 클릭합니다.&lt;br /&gt;결과물을&amp;nbsp;복사하여&amp;nbsp;VSCode&amp;nbsp;에&amp;nbsp;다시&amp;nbsp;붙여넣기합니다. &lt;br /&gt;&lt;br /&gt;Selector&amp;nbsp;Assistant&amp;nbsp;를&amp;nbsp;켜고&amp;nbsp;실행해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ctrl + Shift + C 를 눌러 개발자 도구를 엽니다.&lt;br /&gt;글귀가&amp;nbsp;있는&amp;nbsp;영역을&amp;nbsp;선택합니다. &lt;br /&gt;&lt;br /&gt;파싱할 대상이 이렇게 반복되는 형태로 되어 있을 때는, 저와 같이 하시면 쉽게 파싱하실 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;먼저 반복되는 요소들의 최상위 요소를 선택합니다. 부모 영역의 바로 아래 레벨에 있어야 합니다.&lt;br /&gt;해당 자식 요소의 CSS Selector 를 복사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;731&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvfchp/btr8UVbivtg/2U55S6kDRE7hYJbRKYCVd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvfchp/btr8UVbivtg/2U55S6kDRE7hYJbRKYCVd0/img.png&quot; data-alt=&quot;부모 바로 아래에 있는 자식 요소의 Selector Copy&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvfchp/btr8UVbivtg/2U55S6kDRE7hYJbRKYCVd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvfchp%2Fbtr8UVbivtg%2F2U55S6kDRE7hYJbRKYCVd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;912&quot; height=&quot;731&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;731&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;부모 바로 아래에 있는 자식 요소의 Selector Copy&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;elements 변수에 담겠습니다.&lt;br /&gt;nth-child 괄호 안에 있는 숫자는 몇번째 자식인지를 알려주는 값입니다. 우리가 첫 번째 요소를 선택했으므로 1이 입력되어 있습니다.&lt;br /&gt;우리는&amp;nbsp;반복문을&amp;nbsp;통해&amp;nbsp;모든&amp;nbsp;자식&amp;nbsp;요소를&amp;nbsp;가져올&amp;nbsp;것이기&amp;nbsp;때문에&amp;nbsp;nth-child&amp;nbsp;를&amp;nbsp;지우고&amp;nbsp;div&amp;nbsp;만&amp;nbsp;남깁니다. &lt;br /&gt;&lt;br /&gt;이제&amp;nbsp;반복문을&amp;nbsp;작성해볼게요. &lt;br /&gt;반복문 안에 파싱 대상들을 변수로 지정합니다.각각의 항목에 대한 셀렉터를 가져오겠습니다.&lt;br /&gt;여기서&amp;nbsp;주의할&amp;nbsp;점은,&amp;nbsp;select&amp;nbsp;메서드&amp;nbsp;앞이&amp;nbsp;bs&amp;nbsp;인지&amp;nbsp;el&amp;nbsp;인지를&amp;nbsp;잘&amp;nbsp;구분하셔야&amp;nbsp;합니다.&amp;nbsp;어디서부터&amp;nbsp;시작인지에&amp;nbsp;따라&amp;nbsp;달라집니다. &lt;br /&gt;&lt;br /&gt;이제, 중복된 부분들을 제거합니다.&lt;br /&gt;우리가&amp;nbsp;원하는&amp;nbsp;텍스트만&amp;nbsp;추출합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;913&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvyDOj/btr8ZUJUxVx/qtxpjbJa0oDIiHKZqtjIRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvyDOj/btr8ZUJUxVx/qtxpjbJa0oDIiHKZqtjIRk/img.png&quot; data-alt=&quot;Selector 의 중복된 부분&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvyDOj/btr8ZUJUxVx/qtxpjbJa0oDIiHKZqtjIRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvyDOj%2Fbtr8ZUJUxVx%2FqtxpjbJa0oDIiHKZqtjIRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;913&quot; height=&quot;730&quot; data-origin-width=&quot;913&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Selector 의 중복된 부분&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;파싱이 잘 되었는지 출력해보겠습니다.&lt;br /&gt;결과가&amp;nbsp;잘&amp;nbsp;출력되는&amp;nbsp;것까지&amp;nbsp;확인하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cztbbf/btr8NcdJLS7/nHfPbXEkhiOn6YIKaXkGm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cztbbf/btr8NcdJLS7/nHfPbXEkhiOn6YIKaXkGm0/img.png&quot; data-alt=&quot;명언 글귀 및 글쓴이가 출력된 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cztbbf/btr8NcdJLS7/nHfPbXEkhiOn6YIKaXkGm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcztbbf%2Fbtr8NcdJLS7%2FnHfPbXEkhiOn6YIKaXkGm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;911&quot; height=&quot;730&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;명언 글귀 및 글쓴이가 출력된 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 샘플 코드 : &lt;a href=&quot;https://github.com/wsder31/mechanical_scraper/blob/main/MechanicalScraper/test.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/wsder31/mechanical_scraper/blob/main/MechanicalScraper/test.py&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;이것으로&amp;nbsp;Mechanical&amp;nbsp;Scraper&amp;nbsp;를&amp;nbsp;이용한&amp;nbsp;웹&amp;nbsp;스크래핑&amp;nbsp;방법에&amp;nbsp;대해&amp;nbsp;설명드렸습니다. &lt;br /&gt;&lt;br /&gt;스크래핑에&amp;nbsp;대한&amp;nbsp;기초&amp;nbsp;지식이&amp;nbsp;어느&amp;nbsp;정도&amp;nbsp;있어야&amp;nbsp;하다보니,&amp;nbsp;라이브러리&amp;nbsp;소개&amp;nbsp;중간에&amp;nbsp;스크래핑&amp;nbsp;과정을&amp;nbsp;보여드리느라&amp;nbsp;핵심에서&amp;nbsp;벗어난&amp;nbsp;내용도&amp;nbsp;포함되었습니다.&amp;nbsp;사용법이&amp;nbsp;기억나지&amp;nbsp;않는다면&amp;nbsp;다시&amp;nbsp;한번&amp;nbsp;영상을&amp;nbsp;보시면서&amp;nbsp;리뷰해주시기를&amp;nbsp;부탁드립니다. &lt;br /&gt;&lt;br /&gt;감사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/39</guid>
      <comments>https://learningnote.tistory.com/entry/Mechanical-Scraper-%EC%9B%B9-%EC%8A%A4%ED%81%AC%EB%9E%98%ED%95%91%EC%9D%84-%EC%89%BD%EA%B3%A0-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EB%8F%84%EC%99%80%EC%A3%BC%EB%8A%94-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC#entry39comment</comments>
      <pubDate>Sat, 8 Apr 2023 23:16:51 +0900</pubDate>
    </item>
    <item>
      <title>연금저축 펀드, ETF 그리고 보수에 대한 이해</title>
      <link>https://learningnote.tistory.com/entry/%EC%97%B0%EA%B8%88%EC%A0%80%EC%B6%95-%ED%8E%80%EB%93%9C-ETF-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%B3%B4%EC%88%98%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B4</link>
      <description>&lt;h1&gt;연금저축 펀드, ETF 그리고 보수에 대한 이해&lt;/h1&gt;
&lt;p&gt;연금저축 보험에서 연금저축 펀드로 이전한 이후, 매수와 매도의 보수에 대해 궁금한 분들이 많이 계실 것입니다. 이 글에서는 연금저축 펀드와 ETF의 보수와 수익에 대한 개념을 살펴보고, 이에 따라 어떻게 투자를 해야할지 알아보겠습니다. 또한, 놀고 있는 돈의 이자를 좀 더 많이 받는 방법도 함께 살펴보겠습니다.&lt;/p&gt;
&lt;h2&gt;연금저축 펀드와 ETF의 보수에 대한 이해&lt;/h2&gt;
&lt;h3&gt;연금저축 펀드와 ETF&lt;/h3&gt;
&lt;p&gt;연금저축 펀드와 ETF는 모두 자산 운용사에서 운영되는 투자 상품입니다. 연금저축 펀드 계좌는 다양한 공모 펀드와 ETF들중에서 가입자가 직접 선택을 하고 투자를 하면서 중간중간 변경도 해야 합니다. 연금저축이기 때문에 세액공제 혜택이 있지만, 일반적인 펀드 투자와 다르게 시장 상황에 따라서 번들 바꿔 주거나 분산하는 것도 중요합니다.&lt;/p&gt;
&lt;h3&gt;수수료와 보수&lt;/h3&gt;
&lt;p&gt;연금저축 펀드와 ETF에서 발생하는 비용으로는 수수료와 보수가 있습니다. 수수료는 투자 상품에 따라 다르게 부과됩니다. 일반적으로 펀드에는 수수료가 부과되지만, 연금저축 펀드에는 수수료가 없으며, ETF에는 이례적으로 부과됩니다. 수수료는 해당 상품을 투자할 때 내는 돈에 대해 일정 비율만큼 차감되는 비용입니다.&lt;/p&gt;
&lt;p&gt;반면에 보수는 펀드나 ETF를 운용하기 위해 발생하는 지속적인 비용입니다. 이러한 비용은 펀드 매니저들의 월급, 각종 행정적인 비용, 자산 운용사 등에게 들어가는 것으로, 일반적으로는 본드가 운영되는 동안 그 안에서 정해진 비율대로 매일매일 계산해서 차감합니다. 보수는 펀드나 ETF의 수익에 대해 계산됩니다.&lt;/p&gt;
&lt;h3&gt;보수의 영향&lt;/h3&gt;
&lt;p&gt;펀드나 ETF에서 보수가 높다면 이론적으로는 나중에 손해가 발생할 수도 있습니다. 보수가 높을수록 수익이 줄어들 수 있기 때문입니다. 예를 들어, 코스피 지수를 따라가는 ETF가 있다고 가정해봅시다. 코스피에 상장된 모든 종목이 1년 동안 가격이 하나도 변하지 않았다면, 이 ETF도 가격이 하나도 변하지 않아야 합니다. 그러나 ETF는 매일매일 보수를 조금씩 지불해야 운영됩니다. 만약 1년에 1%의 보수가 적용된다면, 이 ETF의 가격은 1% 하락할 것입니다. 보수가 높다면 이러한 차이는 더욱 두드러질 것입니다. 따라서 펀드나 ETF를 선택할 때는 보수를 고려하는 것이 중요합니다.&lt;/p&gt;
&lt;h2&gt;놀고 있는 돈의 이자를 받는 방법&lt;/h2&gt;
&lt;p&gt;이번 주 중에는 MMF라는 단기 금융상품의 투자가 아주 안전한 것으로 알려져 있습니다. 물론 이는 일시적인 것일 수 있습니다. 일단은 여기에 놓고 있는 것이 좋겠습니다. 그리고 투자가 결정된 이후에는 교체하는 것이 좋습니다. 이러한 방법을 통해 놀고 있는 돈의 이자를 더 많이 받을 수 있습니다.&lt;/p&gt;
&lt;h2&gt;결론&lt;/h2&gt;
&lt;p&gt;연금저축 펀드와 ETF를 선택할 때는 보수를 고려해야 하며, 이에 따라 적절한 투자 전략을 구상하는 것이 중요합니다. 또한, 놀고 있는 돈을 안전하게 운용하는 방법을 찾는 것도 중요합니다. 손경제 상담소에서는 이러한 상황에서의 최적의 투자 전략을 제시해드리고 있으며, 개인 맞춤형 상담도 가능합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;출처: 손에 잡히는 경제&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;</description>
      <category>기타</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/38</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%97%B0%EA%B8%88%EC%A0%80%EC%B6%95-%ED%8E%80%EB%93%9C-ETF-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%B3%B4%EC%88%98%EC%97%90-%EB%8C%80%ED%95%9C-%EC%9D%B4%ED%95%B4#entry38comment</comments>
      <pubDate>Tue, 4 Apr 2023 10:27:10 +0900</pubDate>
    </item>
    <item>
      <title>자동차 두 대의 보험 가입, 어떻게 하면 경제적일까?</title>
      <link>https://learningnote.tistory.com/entry/%EC%9E%90%EB%8F%99%EC%B0%A8-%EB%91%90-%EB%8C%80%EC%9D%98-%EB%B3%B4%ED%97%98-%EA%B0%80%EC%9E%85-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%98%EB%A9%B4-%EA%B2%BD%EC%A0%9C%EC%A0%81%EC%9D%BC%EA%B9%8C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;자동차&amp;nbsp;두&amp;nbsp;대의&amp;nbsp;보험&amp;nbsp;가입,&amp;nbsp;어떻게&amp;nbsp;하면&amp;nbsp;경제적일까?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재&amp;nbsp;두&amp;nbsp;대의&amp;nbsp;자동차를&amp;nbsp;보유하고&amp;nbsp;있는&amp;nbsp;이용자는&amp;nbsp;보험료&amp;nbsp;절약을&amp;nbsp;위한&amp;nbsp;최적의&amp;nbsp;선택을&amp;nbsp;고민하고&amp;nbsp;있다.&amp;nbsp;한&amp;nbsp;대는&amp;nbsp;이용자&amp;nbsp;본인이&amp;nbsp;운전하며,&amp;nbsp;나머지&amp;nbsp;한&amp;nbsp;대는&amp;nbsp;가족&amp;nbsp;한정으로&amp;nbsp;가입해&amp;nbsp;59년생&amp;nbsp;어머니가&amp;nbsp;주로&amp;nbsp;사용하고&amp;nbsp;있다.&amp;nbsp;어머니의&amp;nbsp;차량&amp;nbsp;보험&amp;nbsp;가입&amp;nbsp;방식을&amp;nbsp;고민하는데,&amp;nbsp;앞으로&amp;nbsp;10년&amp;nbsp;이상&amp;nbsp;어머니가&amp;nbsp;운전할&amp;nbsp;것을&amp;nbsp;고려하면&amp;nbsp;어떤&amp;nbsp;보험&amp;nbsp;가입&amp;nbsp;방식이&amp;nbsp;경제적일까? &lt;br /&gt;&lt;br /&gt;다이렉트&amp;nbsp;기준으로&amp;nbsp;보험료&amp;nbsp;견적을&amp;nbsp;확인한&amp;nbsp;결과,&amp;nbsp;가족&amp;nbsp;한정&amp;nbsp;가입의&amp;nbsp;경우&amp;nbsp;65만원&amp;nbsp;정도,&amp;nbsp;어머니&amp;nbsp;이름만으로&amp;nbsp;가입할&amp;nbsp;경우&amp;nbsp;130만원&amp;nbsp;정도가&amp;nbsp;나온다.&amp;nbsp;보험회사와&amp;nbsp;상담한&amp;nbsp;결과,&amp;nbsp;어머니의&amp;nbsp;현재&amp;nbsp;보험&amp;nbsp;등급은&amp;nbsp;11등급이다.&amp;nbsp;미래&amp;nbsp;사고&amp;nbsp;여부,&amp;nbsp;차종&amp;nbsp;변경,&amp;nbsp;가입하는&amp;nbsp;보험사에&amp;nbsp;따라&amp;nbsp;달라질&amp;nbsp;수&amp;nbsp;있지만,&amp;nbsp;전반적으로&amp;nbsp;가족&amp;nbsp;한정으로&amp;nbsp;가입하는&amp;nbsp;것이&amp;nbsp;더&amp;nbsp;경제적일&amp;nbsp;것으로&amp;nbsp;보인다. &lt;br /&gt;&lt;br /&gt;고령&amp;nbsp;운전자의&amp;nbsp;사고&amp;nbsp;발생률이&amp;nbsp;증가함에&amp;nbsp;따라,&amp;nbsp;보험사들은&amp;nbsp;고령자에&amp;nbsp;대한&amp;nbsp;보험료를&amp;nbsp;높이는&amp;nbsp;추세다.&amp;nbsp;따라서&amp;nbsp;시간이&amp;nbsp;지날수록&amp;nbsp;어머니가&amp;nbsp;단독으로&amp;nbsp;가입한&amp;nbsp;보험료가&amp;nbsp;더&amp;nbsp;높아질&amp;nbsp;가능성이&amp;nbsp;있다.&amp;nbsp;또한,&amp;nbsp;할인할증&amp;nbsp;등급은&amp;nbsp;본인&amp;nbsp;명의로&amp;nbsp;가입한&amp;nbsp;보험에만&amp;nbsp;적용되며,&amp;nbsp;3년간&amp;nbsp;사고가&amp;nbsp;없으면&amp;nbsp;기본&amp;nbsp;등급인&amp;nbsp;11등급으로&amp;nbsp;리셋된다. &lt;br /&gt;&lt;br /&gt;이러한 이유로, 지금처럼 가족 한정으로 보험을 가입하는 것이 경제적일 가능성이 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;gt; 출처: 손에 잡히는 경제&lt;/p&gt;</description>
      <category>기타</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/37</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%9E%90%EB%8F%99%EC%B0%A8-%EB%91%90-%EB%8C%80%EC%9D%98-%EB%B3%B4%ED%97%98-%EA%B0%80%EC%9E%85-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%98%EB%A9%B4-%EA%B2%BD%EC%A0%9C%EC%A0%81%EC%9D%BC%EA%B9%8C#entry37comment</comments>
      <pubDate>Tue, 4 Apr 2023 10:04:54 +0900</pubDate>
    </item>
    <item>
      <title>엑셀 암호(비밀번호) 해제 프로그램. (구 UnlockExcel)</title>
      <link>https://learningnote.tistory.com/entry/%EC%97%91%EC%85%80-%EC%95%94%ED%98%B8%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%ED%95%B4%EC%A0%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8</link>
      <description>&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;엑셀 암호(비밀번호) 해제 프로그램. (구 UnlockExcel)&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l8Zzq/btrp0Je8i8k/vWAq4oZk5kcZ98kdwkLIK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l8Zzq/btrp0Je8i8k/vWAq4oZk5kcZ98kdwkLIK0/img.png&quot; data-alt=&quot;엑셀 워크북&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l8Zzq/btrp0Je8i8k/vWAq4oZk5kcZ98kdwkLIK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl8Zzq%2Fbtrp0Je8i8k%2FvWAq4oZk5kcZ98kdwkLIK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;668&quot; height=&quot;356&quot; data-origin-width=&quot;668&quot; data-origin-height=&quot;356&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;엑셀 워크북&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;엑셀 암호(비밀번호)가 걸린 파일을 해제합니다.&lt;br /&gt;&lt;br /&gt;- 워크북 보호 해제&lt;br /&gt;- 워크시트 보호 해제&lt;br /&gt;- 워크시트 숨김 해제&lt;br /&gt;- VBA Project 보호 해제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;s&gt;사용기간: 2022년 12월 31일까지&lt;/s&gt;&lt;br /&gt;&lt;s&gt;사용기간: 2023년 07월 01일까지&lt;/s&gt;&lt;br /&gt;&lt;s&gt;사용기간: 2023년 12월 31일까지&lt;/s&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;20240106. 웹 버전을 이용해주세요.&lt;br /&gt;&lt;a href=&quot;https://unprotect.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;https://unprotect.org&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>유틸리티</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/34</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%97%91%EC%85%80-%EC%95%94%ED%98%B8%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%ED%95%B4%EC%A0%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8#entry34comment</comments>
      <pubDate>Thu, 6 Jan 2022 20:30:35 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 컴파일 및 프로그램 배포</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EB%B0%8F-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EB%B0%B0%ED%8F%AC</link>
      <description>&lt;p&gt;컴파일이란?&lt;/p&gt;
&lt;p&gt;컴파일이란, 사람이 작성한 프로그램 코드를 컴퓨터가 실행할 수 있는 형태로 번역하는 것을 말합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;컴파일러란?&lt;/p&gt;
&lt;p&gt;컴파일러는, 사람이 작성한 프로그램 코드를 컴퓨터가 실행할 수 있는 형태로 번역해주는 프로그램입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇다면 컴파일하는 이유는 무엇일까요?&lt;/p&gt;
&lt;p&gt;프로그램 배포 시, 사용자 PC 에 오토핫키가 설치되어 있지 않아도 실행 가능하도록 하기 위함입니다. 개발하는 사람이야, 당연히 오토핫키를 설치해야 하지만, 사용자에게 오토핫키를 설치해야 하는 번거로움을 줄 필요는 없겠죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;컴파일을 하면, 파일 확장자도 달라집니다. 스크립트 소스 파일은 *.ahk 인 반면에, 컴파일된 파일은 *.exe 가 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇다면 컴파일을 직접 해보도록 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;컴파일을 하려면 필수적으로 두 가지가 필요합니다.&lt;/p&gt;
&lt;p&gt;첫 번째는 컴파일할 대상 스크립트이며,&lt;/p&gt;
&lt;p&gt;두 번째는 컴파일러입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;스크립트는 간단하게 메시지 박스를 띄우는 것으로 해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609600805596&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
MsgBox, Hello world!
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 대상 스크립트 파일을 컴파일하기 위해, 컴파일러를 실행합니다.&lt;/p&gt;
&lt;p&gt;컴파일러는, 오토핫키 설치 시 폴더 지정을 별도로 수정하지 않았다면, 다음과 같은 폴더에 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1609600910150&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\Program Files\AutoHotkey\Compiler\Ahk2Exe.exe&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;윈도 메뉴에서 검색할 수도 있는데, 이때에는 다음과 convert 라고 검색하시면 나옵니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRkCf6/btqSgL4KrYa/aKO4v62h83IOyhcDI74DpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRkCf6/btqSgL4KrYa/aKO4v62h83IOyhcDI74DpK/img.png&quot; data-alt=&quot;ahk2exe 컴파일러&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRkCf6/btqSgL4KrYa/aKO4v62h83IOyhcDI74DpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRkCf6%2FbtqSgL4KrYa%2FaKO4v62h83IOyhcDI74DpK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ahk2exe 컴파일러&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실행화면을 살펴보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bz3kAQ/btqSgM3EbI2/Ik0ffnANjYMZJL5nzSkEYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bz3kAQ/btqSgM3EbI2/Ik0ffnANjYMZJL5nzSkEYk/img.png&quot; data-alt=&quot;ahk2exe 컴파일러&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bz3kAQ/btqSgM3EbI2/Ik0ffnANjYMZJL5nzSkEYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbz3kAQ%2FbtqSgM3EbI2%2FIk0ffnANjYMZJL5nzSkEYk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ahk2exe 컴파일러&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;크게 Required Parameters 영역과, Optional Parameters 영역으로 구분되어 있습니다.&lt;/p&gt;
&lt;p&gt;컴파일할 대상 파일과 변환될 결과 파일의 이름을 지정하는 것은 필수입니다.&lt;/p&gt;
&lt;p&gt;이 외에도 선택적으로 아이콘과 기타 옵션도 지정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제, 변환해보겠습니다.&lt;/p&gt;
&lt;p&gt;위에서 작성한 테스트용 스크립트 파일을 선택하고,&lt;/p&gt;
&lt;p&gt;같은 이름으로 결과 파일의 이름을 지정합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;맨 아래쪽에 있는 Convert 버튼만 누르면 금방 컴파일이 완료됩니다.&lt;/p&gt;
&lt;p&gt;다음과 같은 메시지가 뜬다면, 컴파일이 성공적으로 끝난 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K1BIG/btqR3SKUwUa/g0qmbAOjMue0c7i79EE3BK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K1BIG/btqR3SKUwUa/g0qmbAOjMue0c7i79EE3BK/img.png&quot; data-alt=&quot;컴파일 완료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K1BIG/btqR3SKUwUa/g0qmbAOjMue0c7i79EE3BK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK1BIG%2FbtqR3SKUwUa%2Fg0qmbAOjMue0c7i79EE3BK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;컴파일 완료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;별도로 아이콘을 지정하지 않았다면, 녹색 바탕에 흰 글씨로 H 가 쓰여있는 아이콘으로 지정됩니다.&lt;/p&gt;
&lt;p&gt;이것으로 컴파일 및 프로그램 배포를 마칩니다.&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/33</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EB%B0%8F-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EB%B0%B0%ED%8F%AC#entry33comment</comments>
      <pubDate>Sun, 3 Jan 2021 00:32:56 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 함수(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%95%A8%EC%88%982</link>
      <description>&lt;p&gt;함수를 실제로 어떻게 사용하는지, 왜 사용하는지에 대해 간단한 예를 들어 보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;가장 최근에 배웠던 명령어인 ImageSearch 로 첫 번째 예제를 만들어 볼게요.&lt;/p&gt;
&lt;p&gt;이미지 서치 시간에 작성했던 스크립트를 가져다가 조금만 바꾸겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;파일명만 적어주면, 이미지를 찾으면 클릭하고, 이미지를 찾지 못하거나, 기타 오류가 발생하면&lt;/p&gt;
&lt;p&gt;메시지 박스를 출력하는 함수입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1597294293870&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;imgClick(file)
{
	CoordMode, Pixel, Relative
	CoordMode, Mouse, Relative

	ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./%file%.png

	if (ErrorLevel == 0)
	{
		Click, %vX%, %vY%, 1
	}
	else if (ErrorLevel == 1)
	{
		MsgBox, 이미지를 찾지 못했습니다.
	}
	else if (ErrorLevel == 2)
	{
		MsgBox, 오류가 발생하여 이미지 서치를 수행하지 못했습니다. 이미지 파일의 경로를 확인해주세요.
	}
	return
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 함수를 사용하지 않는다면,&lt;/p&gt;
&lt;p&gt;이미지를 찾을 때마다 저 긴 코드를 반복해서 작성해야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만, 함수를 쓴다면,&lt;/p&gt;
&lt;p&gt;imgClick(&quot;파일명&quot;) 만 적으면 되죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이미지 파일 2개를 준비해서 실습해보아요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;첫 번째 이미지 파일은 이미지 서치 시간에 사용했던 것을 그대로 가져다 쓰겠습니다.&lt;/p&gt;
&lt;p&gt;두 번째 이미지 파일은 윈도 그림판에서 Size 아이콘을 새로 캡처해서 png 파일로 생성하세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image1.png&quot; data-origin-width=&quot;29&quot; data-origin-height=&quot;29&quot; width=&quot;100&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kWRK0/btqGzYaibQa/f8EKz8vEcH0kkHK3Iyp9UK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kWRK0/btqGzYaibQa/f8EKz8vEcH0kkHK3Iyp9UK/img.png&quot; data-alt=&quot;image1.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kWRK0/btqGzYaibQa/f8EKz8vEcH0kkHK3Iyp9UK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkWRK0%2FbtqGzYaibQa%2Ff8EKz8vEcH0kkHK3Iyp9UK%2Fimg.png&quot; data-filename=&quot;image1.png&quot; data-origin-width=&quot;29&quot; data-origin-height=&quot;29&quot; width=&quot;100&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;image1.png&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image2.png&quot; data-origin-width=&quot;41&quot; data-origin-height=&quot;67&quot; width=&quot;103&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPkXie/btqGAQo4wBg/4UruIlbRoO33YaOeZ2o8lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPkXie/btqGAQo4wBg/4UruIlbRoO33YaOeZ2o8lk/img.png&quot; data-alt=&quot;image2.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPkXie/btqGAQo4wBg/4UruIlbRoO33YaOeZ2o8lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPkXie%2FbtqGAQo4wBg%2F4UruIlbRoO33YaOeZ2o8lk%2Fimg.png&quot; data-filename=&quot;image2.png&quot; data-origin-width=&quot;41&quot; data-origin-height=&quot;67&quot; width=&quot;103&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;image2.png&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Alt + 3 을 누르면 1번 이미지가 클릭되고,&lt;/p&gt;
&lt;p&gt;Alt + 4 를 누르면 2번 이미지가 클릭됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;지금 바로 실행해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;CoordMode 가 Relative 로 되어 있으므로,&lt;/p&gt;
&lt;p&gt;그림판이 활성화된 상태에서 실행해야 클릭이 됩니다.&lt;/p&gt;
&lt;p&gt;그렇지 않으면 이미지를 찾지 못했다는 메시지가 출력될 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1597294662974&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!3::
imgClick(&quot;image1&quot;)
return


!4::
imgClick(&quot;image2&quot;)
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;859&quot; data-filename=&quot;function_imgclick.gif&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KoNGt/btqGAwj3Cih/HdKYgi3vijpsBLJxGlAAl1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KoNGt/btqGAwj3Cih/HdKYgi3vijpsBLJxGlAAl1/img.gif&quot; data-alt=&quot;함수를 이용한 이미지 클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KoNGt/btqGAwj3Cih/HdKYgi3vijpsBLJxGlAAl1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/KoNGt/btqGAwj3Cih/HdKYgi3vijpsBLJxGlAAl1/img.gif&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;859&quot; data-filename=&quot;function_imgclick.gif&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;함수를 이용한 이미지 클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;함수를 쓰지 않고,&lt;/p&gt;
&lt;p&gt;image1 과 image2 를 각각 클릭하는 스크립트를 작성해보세요.&lt;/p&gt;
&lt;p&gt;직접 해보시면, 왜 함수를 써야 하는지 몸소 알게 되실 겁니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;함수 전체 소스를 참고하여&lt;/p&gt;
&lt;p&gt;복습해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1597295250706&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


f(x)
{
	y := 2 * x
	return y
}


!1::
MsgBox, % f(2)
return


!2::
y := f(3)
MsgBox, % y
return


imgClick(file)
{
	CoordMode, Pixel, Relative
	CoordMode, Mouse, Relative

	ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./%file%.png

	if (ErrorLevel == 0)
	{
		Click, %vX%, %vY%, 1
	}
	else if (ErrorLevel == 1)
	{
		MsgBox, 이미지를 찾지 못했습니다.
	}
	else if (ErrorLevel == 2)
	{
		MsgBox, 오류가 발생하여 이미지 서치를 수행하지 못했습니다. 이미지 파일의 경로를 확인해주세요.
	}
	return
}


!3::
imgClick(&quot;image1&quot;)
return


!4::
imgClick(&quot;image2&quot;)
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/31</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%95%A8%EC%88%982#entry31comment</comments>
      <pubDate>Thu, 13 Aug 2020 14:06:12 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 함수(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%95%A8%EC%88%981</link>
      <description>&lt;p&gt;우리는 이미 수학 시간에 함수에 대해 배웠습니다.&lt;/p&gt;
&lt;p&gt;그 개념을 생각해보시면,&lt;/p&gt;
&lt;p&gt;프로그래밍 언어에서의 함수도 이해하기 어렵지 않습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;function_def.png&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;691&quot; width=&quot;634&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cItQYE/btqFW0mJ7gi/rvu9r3l7jkXZh1UNPgkXek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cItQYE/btqFW0mJ7gi/rvu9r3l7jkXZh1UNPgkXek/img.png&quot; data-alt=&quot;함수&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cItQYE/btqFW0mJ7gi/rvu9r3l7jkXZh1UNPgkXek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcItQYE%2FbtqFW0mJ7gi%2Frvu9r3l7jkXZh1UNPgkXek%2Fimg.png&quot; data-filename=&quot;function_def.png&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;691&quot; width=&quot;634&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;함수&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;수학에서 함수를 식으로 표현할 때 다음과 같이 적습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595551672373&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;y = 2x         ; y 는 입력값 x 에 2 를 곱하여 나온 값
y = 5x + 10    ; y 는 입력값 x 에 5 를 곱하고 10을 더하여 나온 값
y = -x         ; y 는 입력값 x 에 -1 을 곱하여 나온 값
.    .
.    .
.    .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;또는 y 대신에 f(x) 라고도 표현합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595552023099&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;f(x) = 2x         ; f(x) 는 입력값 x 에 2 를 곱하여 나온 값
f(x) = 5x + 10    ; f(x) 는 입력값 x 에 5 를 곱하고 10을 더하여 나온 값
f(x) = -x         ; f(x) 는 입력값 x 에 -1 을 곱하여 나온 값
 .      .
 .      .
 .      .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 앞에서처럼 어떤 특정한 함수가 아니라,&lt;/p&gt;
&lt;p&gt;일반적인 함수를 나타낼 때는 이렇게 표현합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595552089020&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;y = f(x)    ; y 는 함수 f 에 입력값 x 를 넣고 연산하여 나온 출력값(결과값)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키에서는 함수 f 에 정의된 내용을 다음과 같은 형태로 표현합니다.&lt;/p&gt;
&lt;p&gt;f 대신에 다른 이름으로 정의하셔도 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595554257122&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;f(x)
{
	return 2 * x
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;함수 f 에 어떤 입력값 x 가 들어가면,&lt;/p&gt;
&lt;p&gt;2를 곱한 값을 반환(출력)합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;return 은 핫키를 정의한 마지막 줄에만 쓰는 줄 알았는데,&lt;/p&gt;
&lt;p&gt;함수에서는 저런 의미로도 쓰이네요. 꼭 알아두시기 바랄게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;자, 이제 함수 f 가 정의되었다면,&lt;/p&gt;
&lt;p&gt;이 함수를 사용해봐야겠죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음과 같이 코드를 작성 후 실행해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595554413864&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


f(x)
{
	y := 2 * x
	return y
}


!1::
MsgBox, % f(2)
return


!2::
y := f(3)
MsgBox, % y
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아까는 함수 f 에 return 2 * x 를 직접 넣었는데,&lt;/p&gt;
&lt;p&gt;이번엔 2 * x 를 변수 y 에 담고,&lt;/p&gt;
&lt;p&gt;그 y 를 반환했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이러한 형태로도 쓸 수 있으며,&lt;/p&gt;
&lt;p&gt;실제로는 이와 같은 형태로 대부분 쓰고 있습니다.&lt;/p&gt;
&lt;p&gt;단순한 사칙연산 외에도&lt;/p&gt;
&lt;p&gt;훨씬 다양하고 복잡한 연산 결과를&lt;/p&gt;
&lt;p&gt;함수가 반환해야 하는 경우가 많기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Alt + 1 와 Alt + 2 핫키를 눌러 실행해보셨나요?&lt;/p&gt;
&lt;p&gt;아직 안 해보셨다면, 지금 실행해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;함수를 정의하는 법과 사용하는 법을 배워보았습니다.&lt;/p&gt;
&lt;p&gt;나머지는 응용입니다. 차근차근히 실력을 키워나가 봅시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/30</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%95%A8%EC%88%981#entry30comment</comments>
      <pubDate>Fri, 24 Jul 2020 11:41:56 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 이미지 서치(3)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%84%9C%EC%B9%983</link>
      <description>&lt;p&gt;이미지 서치에 대해 소개하면서,&lt;/p&gt;
&lt;p&gt;컴퓨터마다, 그래픽 카드마다 이미지를 처리하는 방식이 다를 수 있으므로&lt;/p&gt;
&lt;p&gt;이미지 서치는 안정적인 방식이 아니라고 말씀드렸습니다.&lt;/p&gt;
&lt;p&gt;이점을 어느 정도는 보완할 수 있는 방법에 대해 알아보려고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ImageSearch 마지막 인자인 ImageFile 에는&lt;/p&gt;
&lt;p&gt;여러 옵션을 지정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그중에서 가장 많이 쓰이는 두 가지 정도만 다루어 볼 예정입니다.&lt;/p&gt;
&lt;p&gt;첫 번째는 이미지 전처리이며,&lt;/p&gt;
&lt;p&gt;두 번째는 오차 범위입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595340848780&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, *TransN *n ImageFile&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;문법에 유의하세요.&lt;/p&gt;
&lt;p&gt;쉼표와 공백을 잘 구분하여 사용해야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;*TransN 옵션을 사용하면 이미지 안에서&lt;/p&gt;
&lt;p&gt;화면 안의 어느 컬러에도 부합할 색상을 지정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;투명 구역이 있는 PNG, GIF, 그리고 TIF 파일을 찾는 데 자주 사용됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;GIF 파일에 대하여, *TransWhite 면 대부분 작동할 것이며,&lt;/p&gt;
&lt;p&gt;PNG와 TIF 파일에 대하여, *TransBlack 이 가장 적합합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;N 부분에 다른 어떤 칼라 이름 또는 RGB 값을 지정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;*n 옵션에는 0 부터 255 까지의 숫자를 지정하여&lt;/p&gt;
&lt;p&gt;오차 허용 범위를 설정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;숫자가 작으면 엄격하게 찾는 것이고,&lt;/p&gt;
&lt;p&gt;숫자가 높으면 느슨하게 검색합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예를 들어, 아이유 사진을 검색한다고 하면,&lt;/p&gt;
&lt;p&gt;숫자가 높을수록 신봉선도 아이유로 인식될 가능성이 높아집니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기본 값은 0 이며, 30 정도의 값을 지정할 것을 권장합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;값을 넣어 다시 한번 코드를 보여드리겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595341554077&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!3::
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./image1.png
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 이미지 서치가 제대로 이루어졌는지를&lt;/p&gt;
&lt;p&gt;알 수 있는 방법에 대해 배워보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ErrorLevel 이라고 하는 내장 변수가 있습니다.&lt;/p&gt;
&lt;p&gt;ImageSearch 를 비롯하여 몇몇 명령어가 실행된 후에는&lt;/p&gt;
&lt;p&gt;자동으로 ErrorLevel 변수에 값이 들어갑니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ImageSearch 의 경우에는,&lt;/p&gt;
&lt;p&gt;ErrorLevel 에 0, 1, 2 의 값 중 하나가 들어갑니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;각각의 값이 어떤 경우에 들어가는지에 대해 설명드리겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1595341885583&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;0: 지정한 영역 내에서 정상적으로 이미지를 찾은 경우
1: 지정한 영역 내에서 이미지를 발견하지 못한 경우
2: 오류로 인해 이미지를 서치를 수행하지 못한 경우&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ErrorLevel 이 2 인 경우에는, 주로 해당 이미지 파일이 지정된 경로에 없어서 발생하는 경우가 많습니다. 이 점 주의하세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게 내장 변수를 제공해주기 때문에&lt;/p&gt;
&lt;p&gt;좀 더 완성도 있는 프로그램을 만들 수 있어졌습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이미지 서치에 성공한 경우에는 그 위치를 클릭하고,&lt;/p&gt;
&lt;p&gt;실패한 경우에는 그에 알맞은 오류 메시지를 띄우도록&lt;/p&gt;
&lt;p&gt;코드를 작성해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;imagesearch_failed.png&quot; data-origin-width=&quot;175&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk1KmL/btqFQaQ3pK5/5RMhwUAPuc8oMFH6eYK04k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk1KmL/btqFQaQ3pK5/5RMhwUAPuc8oMFH6eYK04k/img.png&quot; data-alt=&quot;ImageSearch&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk1KmL/btqFQaQ3pK5/5RMhwUAPuc8oMFH6eYK04k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk1KmL%2FbtqFQaQ3pK5%2F5RMhwUAPuc8oMFH6eYK04k%2Fimg.png&quot; data-filename=&quot;imagesearch_failed.png&quot; data-origin-width=&quot;175&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ImageSearch&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;힌트는 조건문 if 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595342187560&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!4::
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./image1.png

if (ErrorLevel == 0)
{
	Click, %vX%, %vY%, 1
}
else if (ErrorLevel == 1)
{
	MsgBox, 이미지를 찾지 못했습니다.
}
else if (ErrorLevel == 2)
{
	MsgBox, 오류가 발생하여 이미지 서치를 수행하지 못했습니다. 이미지 파일의 경로를 확인해주세요.
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이미지 서치에 관해 좀 더 자세히 알고 싶으신 분은&lt;/p&gt;
&lt;p&gt;다음의 링크를 살펴보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/commands/ImageSearch.htm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;autohotkeykr.sourceforge.net/docs/commands/ImageSearch.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;지금까지 했던 이미지 서치의 전체 코드를 다시 한번 보면서&lt;/p&gt;
&lt;p&gt;복습하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595342312389&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
ImageSearch, vX, vY, 0, 0, 1600, 1200, ./image1.png
Click, %vX%, %vY%, 1
return


!2::
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, ./image1.png
Click, %vX%, %vY%, 2
return


!3::
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./image1.png
return


!4::
CoordMode, Pixel, Relative
CoordMode, Mouse, Relative

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, *TransBlack *30 ./image1.png

if (ErrorLevel == 0)
{
	Click, %vX%, %vY%, 1
}
else if (ErrorLevel == 1)
{
	MsgBox, 이미지를 찾지 못했습니다.
}
else if (ErrorLevel == 2)
{
	MsgBox, 오류가 발생하여 이미지 서치를 수행하지 못했습니다. 이미지 파일의 경로를 확인해주세요.
}
return&lt;/code&gt;&lt;/pre&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/29</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%84%9C%EC%B9%983#entry29comment</comments>
      <pubDate>Tue, 21 Jul 2020 23:40:58 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 이미지 서치(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%84%9C%EC%B9%982</link>
      <description>&lt;p&gt;활성화된 창이 아니라 전체 화면에서 이미지를 찾는 방법을 실습해볼게요.&lt;/p&gt;
&lt;p&gt;마찬가지로 윈도 그림판의 색상 편집기를 찾아 클릭하는 예제로 해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;imagesearch_icon.png&quot; data-origin-width=&quot;161&quot; data-origin-height=&quot;161&quot; width=&quot;271&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8TwKi/btqFPsCChZE/KzkCzeJr1YKjfqUDohtdZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8TwKi/btqFPsCChZE/KzkCzeJr1YKjfqUDohtdZK/img.png&quot; data-alt=&quot;ImageSearch&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8TwKi/btqFPsCChZE/KzkCzeJr1YKjfqUDohtdZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8TwKi%2FbtqFPsCChZE%2FKzkCzeJr1YKjfqUDohtdZK%2Fimg.png&quot; data-filename=&quot;imagesearch_icon.png&quot; data-origin-width=&quot;161&quot; data-origin-height=&quot;161&quot; width=&quot;271&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ImageSearch&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여러분은 CoordMode 를 배웠었어요.&lt;/p&gt;
&lt;p&gt;물론, 기억은 나지 않으시겠지만요.&lt;/p&gt;
&lt;p&gt;그러나 좋습니다. 복습의 기회가 왔으니까요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594865720187&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Relative|Window|Client]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;지난번에 배웠던 활성화된 창에서의 이미지 서치는&lt;/p&gt;
&lt;p&gt;Relative 좌표계를 사용했습니다.&lt;/p&gt;
&lt;p&gt;좌표계를 지정하지 않으면 Relative 가 기본적으로 설정되기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에 할 전체 화면에서의 이미지 서치는 Screen 좌표계를 씁니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Screen 좌표계에서 이미지 서치를 위해서는,&lt;/p&gt;
&lt;p&gt;CoordMode 의&lt;/p&gt;
&lt;p&gt;첫 번째 인자에 Pixel 을 입력하고&lt;/p&gt;
&lt;p&gt;두 번째 인자에 Screen 을 입력합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 Screen 좌표계에서 마우스 클릭을 위해서는,&lt;/p&gt;
&lt;p&gt;CoordMode 의&lt;/p&gt;
&lt;p&gt;첫 번째 인자에 Mouse 를 입력하고&lt;/p&gt;
&lt;p&gt;두 번째 인자에 Screen 을 입력합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌표계 설정이 끝났으면,&lt;/p&gt;
&lt;p&gt;본격적으로 이미지 서치를 해야겠죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595212658562&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;앞에서 했던 것과 똑같이 하면,&lt;/p&gt;
&lt;p&gt;재미도 없고 배울 것도 없으니&lt;/p&gt;
&lt;p&gt;양념 하나를 살짝 넣어볼게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;한번 생각해보세요.&lt;/p&gt;
&lt;p&gt;스크린의 크기는 컴퓨터 환경마다 다릅니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;어떤 PC 에서는 1280x768 해상도를 쓰고,&lt;/p&gt;
&lt;p&gt;어떤 PC 에서는 1600x1200 해상도를 씁니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이때마다 이미지 서치의 범위를 수정해야 하면&lt;/p&gt;
&lt;p&gt;여간 귀찮은 게 아니겠죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래서 우리에게 필요한 것은&lt;/p&gt;
&lt;p&gt;스크린의 사이즈가 담겨 있는 내장 변수입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;스크린의 가로 크기는 A_ScreenWidth 변수에 담겨 있고,&lt;/p&gt;
&lt;p&gt;세로 크기는 A_ScreenHeight 변수에 담겨 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 내장 변수를 모른다면&lt;/p&gt;
&lt;p&gt;PC 환경이 바뀔 때마다 코드를 수정해야 하거나,&lt;/p&gt;
&lt;p&gt;스크린 사이즈를 구하는 코드를 어떻게든 작성해야 했을 거예요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이런 이유로, 내장 변수에는 어떤 것들이 있는지&lt;/p&gt;
&lt;p&gt;슥~ 한번 훑어보실 것을 추천드립니다.&lt;/p&gt;
&lt;p&gt;내장 변수에 어떤 것들이 있는지는&lt;/p&gt;
&lt;p&gt;'변수' 관련 페이지를 복습하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇다면 이 스크린 사이즈에 대한 내장 변수를 적용한다면&lt;/p&gt;
&lt;p&gt;다음과 같은 코드가 완성됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595213057274&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, ./image1.png
Click, %vX%, %vY%, 1
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;모두 작성하셨다면&lt;/p&gt;
&lt;p&gt;실행해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 윈도 그림판 창을 이동해가며,&lt;/p&gt;
&lt;p&gt;Alt + 2 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;색상 편집기 창이 잘 뜨나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그림판이 활성화되지 않은,&lt;/p&gt;
&lt;p&gt;그러니까 비활성화된 상태에서도&lt;/p&gt;
&lt;p&gt;Alt + 2 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;네, 해보시라고 말씀드린 데에는 이유가 있었습니다.&lt;/p&gt;
&lt;p&gt;색상 편집기가 바로 뜨지 않네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;비활성화 상태에서 색상 편집기 아이콘을 클릭하면&lt;/p&gt;
&lt;p&gt;창만 활성화된다는 사실을 알게 되었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이럴 때에는,&lt;/p&gt;
&lt;p&gt;클릭하기 전에 그림판 창을 활성화하는 코드를 넣어야 합니다.&lt;/p&gt;
&lt;p&gt;그런데 우리는 아직 창을 다루는 방법에 대해 배우지 않았기 때문에&lt;/p&gt;
&lt;p&gt;클릭을 두 번하는 형태로 코드를 바꾸어 실행하도록 하지요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1595213394452&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen

ImageSearch, vX, vY, 0, 0, A_ScreenWidth, A_ScreenHeight, ./image1.png
Click, %vX%, %vY%, 2
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;imagesearch_inactive.gif&quot; data-origin-width=&quot;1357&quot; data-origin-height=&quot;1000&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/puDNf/btqFPrwWk9B/KxKKLL1JoL8oRkHweH9bkK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/puDNf/btqFPrwWk9B/KxKKLL1JoL8oRkHweH9bkK/img.gif&quot; data-alt=&quot;ImageSearch&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/puDNf/btqFPrwWk9B/KxKKLL1JoL8oRkHweH9bkK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/puDNf/btqFPrwWk9B/KxKKLL1JoL8oRkHweH9bkK/img.gif&quot; data-filename=&quot;imagesearch_inactive.gif&quot; data-origin-width=&quot;1357&quot; data-origin-height=&quot;1000&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ImageSearch&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/28</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%84%9C%EC%B9%982#entry28comment</comments>
      <pubDate>Mon, 20 Jul 2020 11:54:24 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 이미지 서치(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%84%9C%EC%B9%98</link>
      <description>&lt;p&gt;이번엔 오랜만에 재미있는 것을 소개해드릴게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키에는 이미지를 찾는 명령어가 있습니다.&lt;/p&gt;
&lt;p&gt;저장해놓은 이미지 파일이&lt;/p&gt;
&lt;p&gt;화면상에 일치하거나 혹은 비슷한 부분이 있으면,&lt;/p&gt;
&lt;p&gt;그것이 어느 좌표에 있는지 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;먼저, 간단 도움말부터 살펴보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1594692341379&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;OutputVarX 와 OutputVarY 는 이제 좀 익숙해지셨나요?&lt;/p&gt;
&lt;p&gt;결과값이 담아질 변수입니다.&lt;/p&gt;
&lt;p&gt;이미지 서치 명령어에서는 이미지가 발견된 x 좌표와 y 좌표가 각각 담깁니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;X1, Y1, X2, Y2 는 각각, 이미지를 찾을 시작점과 끝점의 좌표를 뜻합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ImageFile 인자에는 이미지 파일명을 입력하시면 됩니다.&lt;/p&gt;
&lt;p&gt;이때 주의하실 점이 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이미지는 bmp 또는 png 파일로 준비하셔야 합니다.&lt;/p&gt;
&lt;p&gt;gif, jpg 등은 파일이 저장될 때 손실이 발생하여&lt;/p&gt;
&lt;p&gt;이미지 인식의 정확도가 떨어지기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;imagesearch_range.png&quot; data-origin-width=&quot;1461&quot; data-origin-height=&quot;1125&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rD9tZ/btqFGx6s8cH/kBaI7RDvCw5HlTMHPbuwaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rD9tZ/btqFGx6s8cH/kBaI7RDvCw5HlTMHPbuwaK/img.png&quot; data-alt=&quot;이미지 서치의 범위&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rD9tZ/btqFGx6s8cH/kBaI7RDvCw5HlTMHPbuwaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrD9tZ%2FbtqFGx6s8cH%2FkBaI7RDvCw5HlTMHPbuwaK%2Fimg.png&quot; data-filename=&quot;imagesearch_range.png&quot; data-origin-width=&quot;1461&quot; data-origin-height=&quot;1125&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이미지 서치의 범위&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 기본적인 실습을 해보겠습니다.&lt;/p&gt;
&lt;p&gt;윈도 그림판에서 색상 편집기 아이콘을 찾아 그 좌표를 클릭하는 예제입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;먼저, 이미지 파일을 미리 준비합니다.&lt;/p&gt;
&lt;p&gt;캡처 프로그램을 이용하여 다음의 범위를 이미지로 저장해주세요.&lt;/p&gt;
&lt;p&gt;파일명은 image1.png 로 하겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;참고적으로 말씀드리면,&lt;/p&gt;
&lt;p&gt;이미지를 저장하실 때는&lt;/p&gt;
&lt;p&gt;이미지의 특징이 잘 나타나는 부분을&lt;/p&gt;
&lt;p&gt;가능한 한 작게 따내셔야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래야 인식률이 높아지고 속도가 빨라지기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;editcolors.png&quot; data-origin-width=&quot;1572&quot; data-origin-height=&quot;1125&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y0CXg/btqFIGOFXZw/YcSip9YVYszSHws46M0rWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y0CXg/btqFIGOFXZw/YcSip9YVYszSHws46M0rWK/img.png&quot; data-alt=&quot;이미지 저장&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y0CXg/btqFIGOFXZw/YcSip9YVYszSHws46M0rWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy0CXg%2FbtqFIGOFXZw%2FYcSip9YVYszSHws46M0rWK%2Fimg.png&quot; data-filename=&quot;editcolors.png&quot; data-origin-width=&quot;1572&quot; data-origin-height=&quot;1125&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이미지 저장&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image1.png&quot; data-origin-width=&quot;29&quot; data-origin-height=&quot;29&quot; width=&quot;112&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EieYi/btqFIjMVmW8/3UbOE0Hb4CzyJiuA0V16Xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EieYi/btqFIjMVmW8/3UbOE0Hb4CzyJiuA0V16Xk/img.png&quot; data-alt=&quot;image1.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EieYi/btqFIjMVmW8/3UbOE0Hb4CzyJiuA0V16Xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEieYi%2FbtqFIjMVmW8%2F3UbOE0Hb4CzyJiuA0V16Xk%2Fimg.png&quot; data-filename=&quot;image1.png&quot; data-origin-width=&quot;29&quot; data-origin-height=&quot;29&quot; width=&quot;112&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;image1.png&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 코드를 작성합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594825439919&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
ImageSearch, vX, vY, 0, 0, 1600, 1200, ./image1.png
Click, %vX%, %vY%, 1
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ImageFile 인자에는 파일명을 입력한다고 했는데,&lt;/p&gt;
&lt;p&gt;앞에 './' 는 현재 폴더라는 뜻입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;만약 image 라는 폴더 안에 파일을 저장하셨다면&lt;/p&gt;
&lt;p&gt;./image/image1.png&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;D 드라이브 루트 폴더에 저장하셨다면&lt;/p&gt;
&lt;p&gt;d:/image1.png&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이런 식으로 입력하셔야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또 한 가지 알아두어야 점은&lt;/p&gt;
&lt;p&gt;좌표계를 따로 지정하지 않았기 때문에&lt;/p&gt;
&lt;p&gt;기본 좌표계인 Relative 가 적용되어&lt;/p&gt;
&lt;p&gt;현재 활성화된 창 기준의 좌표로 이미지를 찾습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌표계에 대한 내용이 기억나지 않으신다면,&lt;/p&gt;
&lt;p&gt;잠시 복습을 하고 오시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드를 실행하면 색상 편집기 창이 뜨는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;editcolors_popup.png&quot; data-origin-width=&quot;449&quot; data-origin-height=&quot;331&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y1QsB/btqFHcguiQ0/bzv5699LX0OW8ggn58Zaa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y1QsB/btqFHcguiQ0/bzv5699LX0OW8ggn58Zaa1/img.png&quot; data-alt=&quot;색상 편집기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y1QsB/btqFHcguiQ0/bzv5699LX0OW8ggn58Zaa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy1QsB%2FbtqFHcguiQ0%2Fbzv5699LX0OW8ggn58Zaa1%2Fimg.png&quot; data-filename=&quot;editcolors_popup.png&quot; data-origin-width=&quot;449&quot; data-origin-height=&quot;331&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;색상 편집기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;imagesearch1.gif&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;859&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YsyDv/btqFIN05CDR/KGbL9JPKNBD0pYLIXgFuc1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YsyDv/btqFIN05CDR/KGbL9JPKNBD0pYLIXgFuc1/img.gif&quot; data-alt=&quot;ImageSearch&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YsyDv/btqFIN05CDR/KGbL9JPKNBD0pYLIXgFuc1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/YsyDv/btqFIN05CDR/KGbL9JPKNBD0pYLIXgFuc1/img.gif&quot; data-filename=&quot;imagesearch1.gif&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;859&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ImageSearch&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;몇 번 반복해서 실행해보세요.&lt;/p&gt;
&lt;p&gt;이때 한 가지 짚고 넘어가야 할 중요한 내용이 있거든요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;바로 클릭 지점입니다.&lt;/p&gt;
&lt;p&gt;찾고자 하는 이미지에서 어떤 위치가 클릭되는지를 살펴보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;저장된 이미지의 좌상단이 클릭되네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;따라서, 캡처가 되어야 할 부분의 좌상단은&lt;/p&gt;
&lt;p&gt;클릭이 가능한 지점이어야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇지 않으면 클릭 명령어를 수행하더라도&lt;/p&gt;
&lt;p&gt;아무런 반응이 없거나 엉뚱한 반응이 나타날 테니까요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;신기하지 않나요?&lt;/p&gt;
&lt;p&gt;코드를 몇 줄 적지도 않았는데&lt;/p&gt;
&lt;p&gt;이미지를 찾아 클릭까지 해주는 것이 정말 신기합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만, 이미지 서치는 속도가 빠른 편이 아닐 뿐만 아니라,&lt;/p&gt;
&lt;p&gt;안정적인 방법도 아닙니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;컴퓨터마다 그래픽을 처리하는 방식이 다를 수 있기 때문에&lt;/p&gt;
&lt;p&gt;내 컴퓨터에서는 잘 되던 것이 다른 컴퓨터에서는 안 될 수도 있어요.&lt;/p&gt;
&lt;p&gt;이 점 참고하시면 좋겠네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/27</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%84%9C%EC%B9%98#entry27comment</comments>
      <pubDate>Thu, 16 Jul 2020 00:18:34 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 반복문(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B0%98%EB%B3%B5%EB%AC%B82</link>
      <description>&lt;p&gt;반복문과 조건문은 함께 다닐 때가 많습니다.&lt;/p&gt;
&lt;p&gt;반복 중에 특정한 조건이 충족되면 그 루프를 빠져나가게끔 하는 거죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조건문에 대해 배울 때 숫자 맞히기 게임을 예로 들어 보겠습니다.&lt;/p&gt;
&lt;p&gt;반복문을 배우지 않았을 때는,&lt;/p&gt;
&lt;p&gt;응답을 하면 그 숫자가 맞았는지 틀렸는지 메시지를 띄운 다음,&lt;/p&gt;
&lt;p&gt;곧바로 종료하게끔 코드를 작성했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;반복문을 조합하면,&lt;/p&gt;
&lt;p&gt;정답이 아닌 경우 계속에서 숫자를 입력할 수 있는 창을 띄워주고,&lt;/p&gt;
&lt;p&gt;정답을 맞혔을 경우에만 반복문을 빠져나가 종료하도록 만들 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그 예제를 해볼게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그전에, 먼저 루프를 빠져나가는 방법을 알아야겠죠.&lt;/p&gt;
&lt;p&gt;그 명령어는 간단합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594602644867&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;break [, LoopLabel]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;LoopLabel 은 생략이 가능하며,&lt;/p&gt;
&lt;p&gt;사용할 일은 거의 없으니 모르셔도 무방합니다.&lt;/p&gt;
&lt;p&gt;LoopLabel 인자를 생략한다면 현재 속한 반복문을 빠져나갑니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음의 예제를 통해 감을 잡아 보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594605327759&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!4::
Loop, 5
{
	MsgBox, %A_Index% 번째 반복입니다.
	
	if (A_Index &amp;gt; 2) {
		MsgBox, 반복문을 중지합니다.
		break
	}
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A_Index 는 전에 말씀드린 것처럼,&lt;/p&gt;
&lt;p&gt;AutoHotkey 내장 변수로써 몇 번째 반복인지를 담고 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;반복이 2 보다 커지는 경우&lt;/p&gt;
&lt;p&gt;반복문을 중지하고 루프를 빠져나가겠군요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;149&quot; data-origin-height=&quot;128&quot; data-filename=&quot;break.png&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cumCwb/btqFA673EJi/emswocQ0s8Dik06Hs6KY6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cumCwb/btqFA673EJi/emswocQ0s8Dik06Hs6KY6K/img.png&quot; data-alt=&quot;break&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cumCwb/btqFA673EJi/emswocQ0s8Dik06Hs6KY6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcumCwb%2FbtqFA673EJi%2FemswocQ0s8Dik06Hs6KY6K%2Fimg.png&quot; data-origin-width=&quot;149&quot; data-origin-height=&quot;128&quot; data-filename=&quot;break.png&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;break&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;감을 좀 잡으셨나요?&lt;/p&gt;
&lt;p&gt;감은 왜 항상 나무 높은 곳에 달려 있는지,&lt;/p&gt;
&lt;p&gt;사실 그래서 감 잡기가 쉽지는 않더라고요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 숫자 맞히기 게임에 반복문을 입혀 보겠습니다.&lt;/p&gt;
&lt;p&gt;틀리면 다시 도전,&lt;/p&gt;
&lt;p&gt;맞으면 종료합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음의 예제를 따라 하기 전에 조건문에서 작성했던 숫자 맞히기 게임 소스 코드를,&lt;/p&gt;
&lt;p&gt;하나 복사한 후 직접 수정해보세요. 그러면서 실력이 많이 늘거든요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594606206210&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!5::
correctAnswer := 5

Loop
{
	InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.
	
	if (answer &amp;lt; 1 or answer &amp;gt; 10) {
		MsgBox, 1에서 10까지의 숫자를 입력하세요.
	} else if (answer &amp;lt; correctAnswer) {
		MsgBox, 정답은 더 큰 수입니다.
	} else if (answer &amp;gt; correctAnswer) {
		MsgBox, 정답은 더 작은 수입니다.
	} else {
		MsgBox, 정답입니다.
		break
	}
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;정답인 경우에만 break 명령어로 Loop 를 빠져나가면 됩니다.&lt;/p&gt;
&lt;p&gt;다양한 형태의 오답과 정답을 입력해가며 테스트해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;반복문은 조건문과 마찬가지로 여러 개를 중첩해서 사용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;반복문 안에 또 반복문을 쓸 수 있는 것이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;대표적으로 구구단을 예로 들 수 있습니다.&lt;/p&gt;
&lt;p&gt;말이 나온 김에 이중 루프를 이용해서 구구단을 한번 만들어볼게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;구구단은 이런 식으로 진행됩니다. 맞나요?&lt;/p&gt;
&lt;pre id=&quot;code_1594638357999&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;2 x 1 = 2
2 x 2 = 4
.   .   .
.   .   .
.   .   .
2 x 9 = 18

3 x 1 = 3
3 x 2 = 6
.   .   .
.   .   .
.   .   .
3 x 9 = 27

.   .   .
.   .   .
.   .   .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌변을 살펴보면,&lt;/p&gt;
&lt;p&gt;뒤의 숫자가 1부터 9까지 반복적으로 증가하고,&lt;/p&gt;
&lt;p&gt;그다음에는 앞의 숫자가 2부터 9까지 반복적으로 증가합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;값이 변한다는 뜻은 변수를 써야 한다는 뜻이라고 말씀드렸습니다.&lt;br /&gt;두 군데가 변하므로 간단하게 변수 두 개를 쓰면 되겠습니다.&lt;/p&gt;
&lt;p&gt;그런데 그냥 변하는 것이 아니라 1이라는 일정한 값이 반복적으로 증가되며 변하는군요.&lt;/p&gt;
&lt;p&gt;이럴 때는 반복문을 쓰면 되겠네, 하고 생각하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일단 다음의 코드를 작성하면서 로직과 저의 의도를 이해하려 해 보세요.&lt;/p&gt;
&lt;p&gt;메모장을 띄우고 실행도 한번 해보세요.&lt;/p&gt;
&lt;p&gt;나머지는 그 이후에 마저 설명드릴게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594638217673&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!6::
Loop, 9
{
	a := A_Index
	
	if (a == 1) {
		continue
	}
	
	Loop, 9
	{
		b := A_Index
		
		SendInput, % a &quot; x &quot; b &quot; = &quot; a * b &quot;`n&quot;
	}
	
	SendInput, `n
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;gugu.png&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;504&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EmMC3/btqFBYbbjZ5/FCvfhXOkxeojLwd4Xnm4nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EmMC3/btqFBYbbjZ5/FCvfhXOkxeojLwd4Xnm4nk/img.png&quot; data-alt=&quot;구구단&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EmMC3/btqFBYbbjZ5/FCvfhXOkxeojLwd4Xnm4nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEmMC3%2FbtqFBYbbjZ5%2FFCvfhXOkxeojLwd4Xnm4nk%2Fimg.png&quot; data-filename=&quot;gugu.png&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;504&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;구구단&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다른 명령어는 다 배웠는데,&lt;/p&gt;
&lt;p&gt;딱 한 가지 처음 보는 게 있네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;바로 continue 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;break 가 루프문을 완전히 빠져나가는 명령어라면,&lt;/p&gt;
&lt;p&gt;continue 는 이 명령어 아랫부분은 넘어가되,&lt;/p&gt;
&lt;p&gt;루프를 빠져나가지 않고 다음으로 이어가는 명령어입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좀 전에 보여드렸던 예제를 보시면,&lt;/p&gt;
&lt;p&gt;a 값이 1 이면 continue 명령어를 만나서,&lt;/p&gt;
&lt;p&gt;그 아래에 있는 Loop 문과 SendInput 을 수행하지 않고 넘어갑니다.&lt;/p&gt;
&lt;p&gt;그러고 나서 루프의 다음으로 이어간다면 a 는 2가 되어 있겠죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;눈치채셨겠지만, 1단은 무시하고 2단부터 외우기 위해&lt;/p&gt;
&lt;p&gt;작성한 코드였습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;만약 continue 가 아니라 break 였다면,&lt;/p&gt;
&lt;p&gt;그 아래에 있는 명령어들은 모두 무시될 뿐만 아니라,&lt;/p&gt;
&lt;p&gt;그 즉시 루프를 빠져나가 아무런 결과를 내지 않고 끝날 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;백문이 불여일견!&lt;/p&gt;
&lt;p&gt;continue 로도 실행해보시고,&lt;/p&gt;
&lt;p&gt;break 로 고쳐서도 실행해보세요.&lt;/p&gt;
&lt;p&gt;그 차이를 확실히 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594639294644&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SendInput, % a &quot; x &quot; b &quot; = &quot; a * b &quot;`n&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 부분은 아직 문법에 익숙하지 않으시다면,&lt;/p&gt;
&lt;p&gt;다소 복잡하게 느끼실 수도 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실행 결과를 같이 보면서 이해해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594639415549&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;2 x 1 = 2
2 x 2 = 4
.   .   .
.   .   .
.   .   .
9 x 9 = 81&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SendInput 과 첫 번째 인자 사이에 콤마와 퍼센트(%) 기호가 있으므로&lt;/p&gt;
&lt;p&gt;뒤쪽은 모두 표현식 형태로 인식됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;가장 앞에 있는 a 는 변수의 값이 들어가야 하므로&lt;/p&gt;
&lt;p&gt;큰따옴표 없이 작성했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;곱하기 기호는 'x' 를 그대로 출력해야 하므로,&lt;/p&gt;
&lt;p&gt;큰따옴표로 감싸고 'x' 를 작성했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;b 는 a 와 마찬가지로 변수의 값이 들어가야 하므로&lt;/p&gt;
&lt;p&gt;큰따옴표 없이 작성했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;등호 기호는 '=' 를 그대로 출력해야 하므로,&lt;/p&gt;
&lt;p&gt;큰따옴표로 감싸고 '=' 를 작성했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우변은 a 와 b 의 곱셈 연산 결과를 출력해야 합니다.&lt;/p&gt;
&lt;p&gt;따라서 a 와 b 의 연산 결과를 가져오기 위해&lt;/p&gt;
&lt;p&gt;큰따옴표 없이 a 와 b, 그리고 곱셈 연산자를 작성했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;구구단을 외울 때마다 아래로 줄을 내리기 위해&lt;/p&gt;
&lt;p&gt;개행문자(`n) 를 넣었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;안쪽의 루프가 끝나면,&lt;/p&gt;
&lt;p&gt;1부터 9까지 반복이 끝났다는 뜻이며,&lt;/p&gt;
&lt;p&gt;구구단의 단 하나가 끝났다는 의미입니다.&lt;/p&gt;
&lt;p&gt;그래서 이 때는 개행문자(`n) 를 넣어 한 줄을 더 띄워줍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A_Index 는 해당 루프가 몇 번 돌았는지를 알려줍니다.&lt;/p&gt;
&lt;p&gt;루프가 두 개라면 각각의 A_Index 가 존재하겠네요.&lt;/p&gt;
&lt;p&gt;그런데, 안쪽의 루프에서 바깥쪽 루프의 A_Index 값을 가져오려면 어떻게 해야 할까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;둘 다 변수명이 A_Index 라면 구분할 수가 없을 것입니다.&lt;/p&gt;
&lt;p&gt;따라서 A_Index 를 각각 a 와 b 라는 서로 다른 변수에 넣어두고,&lt;/p&gt;
&lt;p&gt;어떤 걸 출력하고 싶은지 컴퓨터에게 알려주었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다시 코드를 살펴보세요.&lt;/p&gt;
&lt;p&gt;이제 모든 코드가 이해되셨나요?&lt;/p&gt;
&lt;p&gt;아직 안 되셨다면, 설명을 다시 읽어보시고&lt;/p&gt;
&lt;p&gt;또다시 코드를 반복해서 살펴보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;반복문은 매우 중요합니다.&lt;/p&gt;
&lt;p&gt;반복문 전체 예제 코드를 보면서&lt;/p&gt;
&lt;p&gt;반복문을 반복 학습해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594691607450&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
Loop
{
	MsgBox, 무한 반복 중입니다.
}
return


!2::
i := 1

Loop, 5
{
	MsgBox, %i% 번째 반복입니다.
	i := i + 1
}
return


!3::
Loop, 5
{
	MsgBox, %A_Index% 번째 반복입니다.
}
return


!4::
Loop, 5
{
	MsgBox, %A_Index% 번째 반복입니다.
	
	if (A_Index &amp;gt; 2) {
		MsgBox, 반복문을 중지합니다.
		break
	}
}
return


!5::
correctAnswer := 5

Loop
{
	InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.
	
	if (answer &amp;lt; 1 or answer &amp;gt; 10) {
		MsgBox, 1에서 10까지의 숫자를 입력하세요.
	} else if (answer &amp;lt; correctAnswer) {
		MsgBox, 정답은 더 큰 수입니다.
	} else if (answer &amp;gt; correctAnswer) {
		MsgBox, 정답은 더 작은 수입니다.
	} else {
		MsgBox, 정답입니다.
		break
	}
}
return


!6::
Loop, 9
{
	a := A_Index
	
	if (a == 1) {
		continue
	}
	
	Loop, 9
	{
		b := A_Index
		
		SendInput, % a &quot; x &quot; b &quot; = &quot; a * b &quot;`n&quot;
	}
	
	SendInput, `n
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/26</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B0%98%EB%B3%B5%EB%AC%B82#entry26comment</comments>
      <pubDate>Mon, 13 Jul 2020 20:47:14 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 반복문(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B0%98%EB%B3%B5%EB%AC%B81</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;반복문(1)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;프로그래밍의 꽃이라 할 수 있는 반복문을 배워보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사람에게 일을 시키면, 두세 번만 같은 일을 시켜도&lt;/p&gt;
&lt;p&gt;짜증을 내기 마련이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만 컴퓨터는 참 좋은게, 두세 번이 아니라 수천번 수만 번을 시켜도&lt;/p&gt;
&lt;p&gt;짜증 내지 않고 잘 수행을 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 점을 이용하면 많은 일을 쉽고 빠르고 편리하게 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;그래서 이 반복문은 프로그래밍의 꽃이라고 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;반복문은 여러 형태의 문법이 있습니다.&lt;/p&gt;
&lt;p&gt;자주 쓰이고 쉬운 것을 위주로 다루어 보겠습니다.&lt;/p&gt;
&lt;p&gt;어려운 것은 반복문이 어느 정도 익숙해지면&lt;/p&gt;
&lt;p&gt;스스로 학습할 수 있는 힘이 길러질 거라고 생각하기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;먼저 Loop 라는 명령어입니다.&lt;/p&gt;
&lt;p&gt;Loop 다음에 콤마(,)를 찍어 간단 도움말을 먼저 살펴보시죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594349361997&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Loop [, Count]
Loop, FilePattern [, IncludeFolders?, Recurse?]
Loop, Parse, InputVar [, Delimiters|CSV, OmitChars]
Loop, Read, InputFile [, OutputFile]
Loop, HKLM|HKU|HKCU|HKCR|HKCC [, Key, IncludeSubkeys?, Recurse?]
{
	commands
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;말씀드렸듯이 굉장히 다양한 형태의 문법이 존재합니다.&lt;/p&gt;
&lt;p&gt;처음에 나온 것이 가장 간단해 보이네요.&lt;/p&gt;
&lt;p&gt;인자도 대괄호 안에 있으니, 인자를 생략한 상태로도 쓸 수 있고 말이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Count 인자는 몇 번을 반복할 것인지를 알려주는 인자입니다.&lt;/p&gt;
&lt;p&gt;이게 생략된다면 무한 반복이 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;궁금하시면 일단 한번 해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594349553532&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
Loop
{
	MsgBox, 무한 반복 중입니다.
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;loop_infinite.png&quot; data-origin-width=&quot;142&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw0Gzy/btqFvINWLZC/5248Rk82tohuKSiTYvAbG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw0Gzy/btqFvINWLZC/5248Rk82tohuKSiTYvAbG0/img.png&quot; data-alt=&quot;Loop&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw0Gzy/btqFvINWLZC/5248Rk82tohuKSiTYvAbG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw0Gzy%2FbtqFvINWLZC%2F5248Rk82tohuKSiTYvAbG0%2Fimg.png&quot; data-filename=&quot;loop_infinite.png&quot; data-origin-width=&quot;142&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Loop&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;OK 버튼을 눌러도 계속해서 메시지 박스가 나타납니다.&lt;/p&gt;
&lt;p&gt;우리는 미리 F4 키에 오토핫키를 종료하는 명령어를 정의해놓았기 때문에&lt;/p&gt;
&lt;p&gt;손쉽게 오토핫키를 끝낼 수 있겠네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이밖에도 오토핫키를 종료하는 방법은 다양합니다.&lt;/p&gt;
&lt;p&gt;이미 오토핫키의 시작과 종료하는 방법은 예전에 다루었기 때문에&lt;/p&gt;
&lt;p&gt;기억이 나지 않는 분들은 지난 글을 보며 복습해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번엔 카운트도 한번 해보시죠.&lt;/p&gt;
&lt;p&gt;그냥 하면 심심하니까 몇 번째 반복하는지를 메시지 박스에 출력해볼게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;막막하시다고요?&lt;/p&gt;
&lt;p&gt;이럴 때 쓰라고 있는 것이 변하는 수, 변수입니다.&lt;/p&gt;
&lt;p&gt;몇 번째 반복되었는지가 계속 바뀌므로,&lt;/p&gt;
&lt;p&gt;바뀌는 값이 있다면 변수를 사용하는 것이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;값이 변할 땐 변수, 잊지 마세요!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594351179674&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
i := 1

Loop, 5
{
	MsgBox, %i% 번째 반복입니다.
	i := i + 1
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;잘 되나요?&lt;/p&gt;
&lt;p&gt;잘하셨습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;loop_count.png&quot; data-origin-width=&quot;136&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xrvnf/btqFwi83WRY/mJm8B8kYyETApp6G9uHt8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xrvnf/btqFwi83WRY/mJm8B8kYyETApp6G9uHt8k/img.png&quot; data-alt=&quot;Loop&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xrvnf/btqFwi83WRY/mJm8B8kYyETApp6G9uHt8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxrvnf%2FbtqFwi83WRY%2FmJm8B8kYyETApp6G9uHt8k%2Fimg.png&quot; data-filename=&quot;loop_count.png&quot; data-origin-width=&quot;136&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Loop&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번엔 i 변수를 지정하지 않고 하는 방법을 알려드릴게요.&lt;/p&gt;
&lt;p&gt;오토핫키 내장 변수를 이용하는 방법입니다.&lt;/p&gt;
&lt;p&gt;일단 따라 해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594351301334&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!3::
Loop, 5
{
	MsgBox, %A_Index% 번째 반복입니다.
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드가 더 간결해졌군요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이래서 내장 변수를 많이 알아두시면 편리합니다.&lt;/p&gt;
&lt;p&gt;'A_' 로 시작하는 것들은 모두 AutoHotkey 내장 변수입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A_Index 외에도 굉장히 많은 내장 변수가 있으니&lt;/p&gt;
&lt;p&gt;다음의 링크를 통해 쭉 한번 살펴보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/Variables.htm#BuiltIn&quot;&gt;http://autohotkeykr.sourceforge.net/docs/Variables.htm#BuiltIn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;가장 간단한 반복문 형태에 대해 살펴보았습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/25</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B0%98%EB%B3%B5%EB%AC%B81#entry25comment</comments>
      <pubDate>Fri, 10 Jul 2020 12:28:59 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 조건문(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%A1%B0%EA%B1%B4%EB%AC%B82</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키] 조건문(2)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조건문을 사용할 때,&lt;/p&gt;
&lt;p&gt;초보자들이 가장 많이 헷갈려하는 부분에 대해&lt;/p&gt;
&lt;p&gt;설명해드릴게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;if ~ if 와 if ~ else if&lt;/p&gt;
&lt;p&gt;의 차이에 대해 알아보려고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음의 코드를 작성하고&lt;/p&gt;
&lt;p&gt;각각 실행해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594215974772&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!5::
a := 10

if (a &amp;gt; 1)
{
	MsgBox, a 는 1 보다 큽니다.
}
else if (a &amp;gt; 5)
{
	MsgBox, a 는 5 보다 큽니다.
}
return


!6::
b := 10

if (b &amp;gt; 1)
{
	MsgBox, b 는 1 보다 큽니다.
}
if (b &amp;gt; 5)
{
	MsgBox, b 는 5 보다 큽니다.
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;차이점을 아시겠나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;첫 번째 예제를 먼저 분석해보시죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;if 와 else if 는 크게 보면 하나의 묶음입니다.&lt;/p&gt;
&lt;p&gt;if 조건부가 참이라면 그다음의 조건인 else if 조건부는 건너뜁니다.&lt;/p&gt;
&lt;p&gt;따라서 메시지 박스는 첫 번째 것만 출력되죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 두 번째 예제입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;if ~ else if ~ else 는 모두 하나의 묶음입니다.&lt;/p&gt;
&lt;p&gt;이 중에 if 는 반드시 사용해야 하지만,&lt;/p&gt;
&lt;p&gt;else if 와 else 는 사용하지 않아도 됩니다.&lt;/p&gt;
&lt;p&gt;모두 사용하려면 전 시간에 알려드렸던 것처럼 순서를 지키셔야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;바로 이 두 번째 예제는,&lt;/p&gt;
&lt;p&gt;if ~ else if ~ else 중 if 만 사용한 예제입니다.&lt;/p&gt;
&lt;p&gt;if 를 두 번 사용한 것이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그 말은, 첫 번째 묶음을 끝냈더라도&lt;/p&gt;
&lt;p&gt;두 번째 묶음에도 진입한다는 뜻입니다.&lt;/p&gt;
&lt;p&gt;따라서, 메시지 박스는 두 번 모두 출력됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;매우 자주 헷갈려하시는 부분이고,&lt;/p&gt;
&lt;p&gt;경우에 따라 논리적으로 커다란 오류가 될 수도 있는 부분이기 때문에&lt;/p&gt;
&lt;p&gt;잘 숙지하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 중첩 조건문을 살펴보겠습니다.&lt;/p&gt;
&lt;p&gt;if 문 안에 또 if 문이 있는 경우입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;지난 시간에 했던 숫자 맞히기 게임을 다른 형태로 만들어볼게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594217331658&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!7::
correctAnswer := 5
InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.

if (answer &amp;lt; 0)
{
	MsgBox, 음수는 입력하지 마세요.
}
else if (answer &amp;lt; 10)
{
	if (answer == correctAnswer)
	{
		MsgBox, 정답입니다.
	}
	else
	{
		MsgBox, 틀렸습니다.
	}
}
else
{
	MsgBox, %answer% 를 입력하셨군요.
}

return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;첫 번째 조건부(if) 에서는 사용자 입력값이 0 보다 작으면&lt;/p&gt;
&lt;p&gt;음수를 입력하지 말라는 메시지를 띄웁니다.&lt;/p&gt;
&lt;p&gt;평범하네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;두 번째 조건부(else if) 입니다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;여기까지의 조건을 풀어쓰면 이렇습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;answer 값은 0 보다 작지 않고 (0 보다 크거나 같고),&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;10 보다는 작은 경우입니다.&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 조건에 해당하는 경우에는 또 한 묶음의 조건문을 만납니다.&lt;/p&gt;
&lt;p&gt;정답과 입력값이 같은지를 비교하는 거죠.&lt;/p&gt;
&lt;p&gt;이렇게 중첩된 조건문이 사용될 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;세 번째 조건부(else) 입니다.&lt;/p&gt;
&lt;p&gt;위의 두 가지 조건에 해당하지 않는 값이 입력되었을 때에 해당합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조건을 모두 풀어쓰면 이렇습니다.&lt;/p&gt;
&lt;p&gt;answer 값은 0 보다 작지 않고, 10 보다 작지 않은 경우입니다.&lt;/p&gt;
&lt;p&gt;이 때는 입력값을 그대로 보여주도록 해보았습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실제로 실행해보지 않으셨다면,&lt;/p&gt;
&lt;p&gt;각각의 조건에 맞도록 입력해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. 음수 값 입력&lt;/p&gt;
&lt;p&gt;2. 정답(5) 입력&lt;/p&gt;
&lt;p&gt;3. 1~10 사이의 숫자 중 정답(5)이 아닌 숫자 입력&lt;/p&gt;
&lt;p&gt;4. 숫자 이외의 값 입력&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;if2.png&quot; data-origin-width=&quot;137&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9MGmp/btqFtKdMuGH/EGmBUjyRTbkXB9tQBko6V0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9MGmp/btqFtKdMuGH/EGmBUjyRTbkXB9tQBko6V0/img.png&quot; data-alt=&quot;조건문&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9MGmp/btqFtKdMuGH/EGmBUjyRTbkXB9tQBko6V0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9MGmp%2FbtqFtKdMuGH%2FEGmBUjyRTbkXB9tQBko6V0%2Fimg.png&quot; data-filename=&quot;if2.png&quot; data-origin-width=&quot;137&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;조건문&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 예제에서의 중첩 조건문은 else if 에만 사용하였지만,&lt;/p&gt;
&lt;p&gt;if 든, else if 든, else 든 어디에든 중첩할 수 있습니다.&lt;/p&gt;
&lt;p&gt;2중, 3중, 다중으로도 중첩할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만 너무 많은 중첩을 하게 되면,&lt;/p&gt;
&lt;p&gt;프로그램의 흐름을 파악하기 어려우므로&lt;/p&gt;
&lt;p&gt;최대한 간략하게 작성할 수 있도록 연습하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;전체 예제 코드를 보고&lt;/p&gt;
&lt;p&gt;복습하는 시간을 가져보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594218221606&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
if (10 &amp;gt; 1) {
	MsgBox, 참입니다.
} else {
	MsgBox, 거짓입니다.
}
return


!2::
if (10 &amp;lt; 1) {
	MsgBox, 참입니다.
} else {
	MsgBox, 거짓입니다.
}
return


!3::
InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.
MsgBox, %answer%
return


!4::
correctAnswer := 5
InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.

if (answer &amp;lt; 1 or answer &amp;gt; 10) {
	MsgBox, 1에서 10까지의 숫자를 입력하세요.
} else if (answer &amp;lt; correctAnswer) {
	MsgBox, 정답은 더 큰 수입니다.
} else if (answer &amp;gt; correctAnswer) {
	MsgBox, 정답은 더 작은 수입니다.
} else {
	MsgBox, 정답입니다.
}
return


!5::
a := 10

if (a &amp;gt; 1)
{
	MsgBox, a 는 1 보다 큽니다.
}
else if (a &amp;gt; 5)
{
	MsgBox, a 는 5 보다 큽니다.
}
return


!6::
b := 10

if (b &amp;gt; 1)
{
	MsgBox, b 는 1 보다 큽니다.
}
if (b &amp;gt; 5)
{
	MsgBox, b 는 5 보다 큽니다.
}
return


!7::
correctAnswer := 5
InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.

if (answer &amp;lt; 0)
{
	MsgBox, 음수는 입력하지 마세요.
}
else if (answer &amp;lt; 10)
{
	if (answer == correctAnswer)
	{
		MsgBox, 정답입니다.
	}
	else
	{
		MsgBox, 틀렸습니다.
	}
}
else
{
	MsgBox, %answer% 를 입력하셨군요.
}

return&lt;/code&gt;&lt;/pre&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/24</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%A1%B0%EA%B1%B4%EB%AC%B82#entry24comment</comments>
      <pubDate>Wed, 8 Jul 2020 23:29:46 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 조건문(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%A1%B0%EA%B1%B4%EB%AC%B81</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키] 조건문(1)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조건문은 프로그램을 매우 다채롭게(?) 해줍니다.&lt;/p&gt;
&lt;p&gt;이런 상황에서는 이런 명령을 하고,&lt;/p&gt;
&lt;p&gt;저런 상황에서는 저런 명령을 할 수 있게 해 주기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조건문이 없다면 딱 정해진 상황에 대해서만&lt;/p&gt;
&lt;p&gt;프로그램을 작동시킬 수 있을 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조건문은 if 라는 명령어를 사용합니다.&lt;/p&gt;
&lt;p&gt;우리말로 풀이한다면 '만약에'라는 뜻이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;먼저, 간단 도움말을 확인하기 위해,&lt;/p&gt;
&lt;p&gt;SciTE4AutoHotkey 에디터를 열고&lt;/p&gt;
&lt;p&gt;if 를 입력한 후 한 칸 띄고 여는 괄호(()를 입력해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594124236639&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (Expression) {
	commands
} else {
	commands
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;if 다음의 괄호 안에는 Expression 형태로 조건을 넣을 수 있으며,&lt;/p&gt;
&lt;p&gt;그 연산 결과가 참이면 해당 블록의 명령을 실행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;else 블록에는 위에서의 결과가 참이 아닌&lt;/p&gt;
&lt;p&gt;그 밖의 결과값을 가진다면 실행하는 명령어를 넣을 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예제 하나를 실행해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594124480990&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
if (10 &amp;gt; 1) {
	MsgBox, 참입니다.
} else {
	MsgBox, 거짓입니다.
}
return


!2::
if (10 &amp;lt; 1) {
	MsgBox, 참입니다.
} else {
	MsgBox, 거짓입니다.
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키를 실행하고,&lt;/p&gt;
&lt;p&gt;Alt + 1 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;10 은 1 보다 크므로 Expression 결과는 참이 됩니다.&lt;/p&gt;
&lt;p&gt;그렇기 때문에 첫 번째 블록의 명령을 실행하며,&lt;/p&gt;
&lt;p&gt;&quot;참입니다.&quot; 라는 메시지 박스가 출력됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Alt + 2 키를 누르면 어떤가요?&lt;/p&gt;
&lt;p&gt;10 은 1 보다 작으므로 Expression 결과는 거짓이 됩니다.&lt;/p&gt;
&lt;p&gt;따라서 첫 번째 블록을 실행하지 않고&lt;/p&gt;
&lt;p&gt;다음의 else 블록으로 넘어가기 때문에,&lt;/p&gt;
&lt;p&gt;&quot;거짓입니다.&quot; 라는 메시지 박스가 출력됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조건을 여러 개 설정하는 방법도 있습니다.&lt;/p&gt;
&lt;p&gt;if 와 else 외에 else if 라는 구문을 추가해주면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주의하실 점은,&lt;/p&gt;
&lt;p&gt;if 는 항상 맨 처음에 위치하며&lt;/p&gt;
&lt;p&gt;else 는 항상 맨 나중에 위치합니다.&lt;/p&gt;
&lt;p&gt;그 중간에는 여러 개의 else if 블록을 넣으셔도 상관없습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594125020608&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (Expression) {
	commands
} else if (Expression) {
	commands
} else {
	commands
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 문법을 사용하여&lt;/p&gt;
&lt;p&gt;숫자 맞히기 Up &amp;amp; Down 게임을 만들어보겠습니다.&lt;/p&gt;
&lt;p&gt;갑자기요? 네!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 게임만 능숙하게 만들 수 있다면&lt;/p&gt;
&lt;p&gt;조건문은 거의 다 이해했다고 생각하셔도 됩니다.&lt;/p&gt;
&lt;p&gt;그러니 처음에는 잘 이해가 안 되더라도&lt;/p&gt;
&lt;p&gt;반복 학습하실 것을 권해드립니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;만들어볼 게임은 이렇습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1594125830445&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1. 1부터 10까지의 숫자 중 하나를 정답으로 선정합니다.
2. 사용자가 숫자를 입력합니다.
3. 입력한 숫자가 1에서 10까지의 범위를 벗어나면, 오류 메시지 박스를 출력합니다.
4. 입력한 숫자가 정답보다 크면, 정답보다 큰 수라고 메시지 박스를 출력합니다.
5. 입력한 숫자가 정답보다 작으면, 정답보다 작은 수라고 메시지 박스를 출력합니다.
6. 입력한 숫자가 정답과 일치하면, 정답이라고 메시지 박스를 출력합니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;사용자로부터 숫자를 입력받기 위해&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;잠시 다루어볼 명령어가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;InputBox 라는 명령어입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;MsgBox 는 메시지를 출력하는 상자라면,&lt;/p&gt;
&lt;p&gt;InputBox 는 메시지를 입력하는 상자입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;간단 도움말을 보면 이렇습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594125975827&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우리는 이 중에서 Prompt 인자 까지만 사용할 예정입니다.&lt;/p&gt;
&lt;p&gt;더 자세히 알고 싶으시면 다음의 링크를 통해 공부해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/commands/InputBox.htm&quot;&gt;http://autohotkeykr.sourceforge.net/docs/commands/InputBox.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594126172560&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!3::
InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.
MsgBox, %answer%
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;백문이 불여일견, 바로 실행해서 결과를 확인해보시죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;inputbox.png&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;198&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oOhXz/btqFtJxNmm9/R2kAhdJFJkXc4PG23MM3F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oOhXz/btqFtJxNmm9/R2kAhdJFJkXc4PG23MM3F0/img.png&quot; data-alt=&quot;InputBox&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oOhXz/btqFtJxNmm9/R2kAhdJFJkXc4PG23MM3F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoOhXz%2FbtqFtJxNmm9%2FR2kAhdJFJkXc4PG23MM3F0%2Fimg.png&quot; data-filename=&quot;inputbox.png&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;198&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;InputBox&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;InputBox 를 통해 입력받은 메시지를 answer 이라는 변수에 넣습니다.&lt;/p&gt;
&lt;p&gt;그리고 MsgBox 명령어를 통해 그 변수의 값을 출력하도록 하는 예제였습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇다면 이제 사용자 입력을 받는 방법을 터득하셨네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;본격적으로 게임을 만들어보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1594126398485&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!4::
correctAnswer := 5
InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.

if (answer &amp;lt; 1 or answer &amp;gt; 10) {
	MsgBox, 1에서 10까지의 숫자를 입력하세요.
} else if (answer &amp;lt; correctAnswer) {
	MsgBox, 정답은 더 큰 수입니다.
} else if (answer &amp;gt; correctAnswer) {
	MsgBox, 정답은 더 작은 수입니다.
} else {
	MsgBox, 정답입니다.
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;정답을 임의로 잡아 correctAnswer 이라는 변수에 넣어둡니다.&lt;/p&gt;
&lt;p&gt;그리고 InputBox 를 통해 사용자가 응답을 할 수 있게 하는 거죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그 응답을 정답과 비교하여,&lt;/p&gt;
&lt;p&gt;조건에 따라 적절한 메시지 박스를 출력하면 끝나는 코드입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Expression 에는 연산자(Operator)가 들어갑니다.&lt;/p&gt;
&lt;p&gt;연산자에는 여러 종류가 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;더하기(+), 빼기(-), 곱하기(*), 나누기(/) 등을 나타내는 연산자를&lt;/p&gt;
&lt;p&gt;산술 연산자라고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;크다(&amp;gt;), 작다(&amp;lt;), 같다(==), 크거나 같다(&amp;gt;=), 작거나 같다(&amp;lt;=) 등을 나타내는 연산자를&lt;/p&gt;
&lt;p&gt;비교 연산자라고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고(and), 또는(or) 등을 나타내는 연산자를&lt;/p&gt;
&lt;p&gt;논리 연산자라고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 밖에도 매우 다양한 연산자가 있으나,&lt;/p&gt;
&lt;p&gt;자주 쓰는 세 가지 종류만 간단히 소개해드렸습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다시 코드로 돌아가 봅시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;if 문의 첫 번째 조건부에는,&lt;/p&gt;
&lt;p&gt;answer 이 1보다 작거나 10보다 큰 경우에 대한 처리를 해주었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그게 아니라면(answer 가 1과 10 사이에 있다면),&lt;/p&gt;
&lt;p&gt;다음 조건부로 넘어가 answer 가 correctAnswer 보다 작은 지를 확인합니다.&lt;/p&gt;
&lt;p&gt;answer 가 correctAnswer 보다 작다면,&lt;/p&gt;
&lt;p&gt;정답은 더 큰 수라고 알려줍니다.&lt;/p&gt;
&lt;p&gt;하지만, 그게 아니라면 다음 조건부로 넘어갑니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;answer 가 correctAnswer 보다 큰지를 확인합니다.&lt;/p&gt;
&lt;p&gt;answer 가 더 크다면,&lt;/p&gt;
&lt;p&gt;정답은 더 작은 수라고 알려줍니다.&lt;/p&gt;
&lt;p&gt;하지만, 그게 아니라면 다음 조건부로 넘어갑니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게 조건을 하나씩 따져가면서&lt;/p&gt;
&lt;p&gt;아래로 아래로 내려왔습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;else 구문을 만나면,&lt;/p&gt;
&lt;p&gt;위에서의 조건이 모두 거짓인 경우에 대한 처리를 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;이 예제에서 else 는&lt;/p&gt;
&lt;p&gt;사실상 answer 와 correctAnswer 가 일치하는 조건이라고 할 수 있겠네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래서 answer 와 correctAnswer 가 같다면,&lt;/p&gt;
&lt;p&gt;정답이라는 메시지를 출력하게 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조건문은 매우 중요하기 때문에,&lt;/p&gt;
&lt;p&gt;처음에는 코드를 따라서 작성해보시고&lt;/p&gt;
&lt;p&gt;혼자서도 작성할 수 있을 정도로 반복 학습하여&lt;/p&gt;
&lt;p&gt;숙지해두시는 것이 좋겠습니다.&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/23</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%A1%B0%EA%B1%B4%EB%AC%B81#entry23comment</comments>
      <pubDate>Tue, 7 Jul 2020 22:23:55 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 메시지 박스(3)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B0%95%EC%8A%A43</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;메시지&amp;nbsp;박스(3)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메시지 박스에는 다양한 형태가 있었죠.&lt;/p&gt;
&lt;p&gt;이렇게나 다양하게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;msgbox_options.png&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;877&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3mPJG/btqFnP6rv3A/zBAutpG2q2tjbJHVgqXg61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3mPJG/btqFnP6rv3A/zBAutpG2q2tjbJHVgqXg61/img.png&quot; data-alt=&quot;메시지 박스의 다양한 기능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3mPJG/btqFnP6rv3A/zBAutpG2q2tjbJHVgqXg61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3mPJG%2FbtqFnP6rv3A%2FzBAutpG2q2tjbJHVgqXg61%2Fimg.png&quot; data-filename=&quot;msgbox_options.png&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;877&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;메시지 박스의 다양한 기능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번 시간에는 이 메시지 박스를,&lt;/p&gt;
&lt;p&gt;SciTE4AutoHotkey 에디터가 제공해주는 툴로&lt;/p&gt;
&lt;p&gt;간편하게 만드는 법에 대해 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;상단 툴바에 보면 MsgBox Creator 라는 아이콘이 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;msgbox creator.png&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;104&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpCjYO/btqFoQwwYJE/kvmopEIG11So1QrglOK9UK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpCjYO/btqFoQwwYJE/kvmopEIG11So1QrglOK9UK/img.png&quot; data-alt=&quot;MsgBox Creator 아이콘&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpCjYO/btqFoQwwYJE/kvmopEIG11So1QrglOK9UK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpCjYO%2FbtqFoQwwYJE%2FkvmopEIG11So1QrglOK9UK%2Fimg.png&quot; data-filename=&quot;msgbox creator.png&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;104&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox Creator 아이콘&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;msgbox creator2.png&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;458&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKA0WA/btqFnhCBymE/dkNpkT5bC41bTZh5pSQVcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKA0WA/btqFnhCBymE/dkNpkT5bC41bTZh5pSQVcK/img.png&quot; data-alt=&quot;MsgBox Creator&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKA0WA/btqFnhCBymE/dkNpkT5bC41bTZh5pSQVcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKA0WA%2FbtqFnhCBymE%2FdkNpkT5bC41bTZh5pSQVcK%2Fimg.png&quot; data-filename=&quot;msgbox creator2.png&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;458&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox Creator&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;바로 이 툴을 이용하면 아주 쉽게 다양한 메시지 박스를 만들어낼 수 있습니다.&lt;/p&gt;
&lt;p&gt;Title 에는 제목을 적고,&lt;/p&gt;
&lt;p&gt;Text 에는 본문 내용을 적고,&lt;/p&gt;
&lt;p&gt;그 밖에도 Button 의 형태라든지&lt;/p&gt;
&lt;p&gt;Icon 이라든지 기타 여러 가지의 옵션을 지정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;옵션을 바꿀 때마다 하단의 Result 영역에&lt;/p&gt;
&lt;p&gt;명령어가 실시간으로 업데이트되는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Insert in SciTE 버튼을 누르면,&lt;/p&gt;
&lt;p&gt;해당 명령어가 SciTE4AutoHotkey 에디터의 현재 커서 위치에 삽입됩니다.&lt;/p&gt;
&lt;p&gt;하지만 코드가 길 경우 어디에 추가되는지 헷갈릴 수 있으므로,&lt;/p&gt;
&lt;p&gt;그냥 Result 영역에 있는 명령어를 복사해서 붙여 넣는 식으로 사용하실 것을 추천드립니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;msgbox creator animation.gif&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;458&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cadGE5/btqFljOnsmf/DkllYe19KEUm2hUiyg9dA0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cadGE5/btqFljOnsmf/DkllYe19KEUm2hUiyg9dA0/img.gif&quot; data-alt=&quot;MsgBox Creator 사용법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cadGE5/btqFljOnsmf/DkllYe19KEUm2hUiyg9dA0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cadGE5/btqFljOnsmf/DkllYe19KEUm2hUiyg9dA0/img.gif&quot; data-filename=&quot;msgbox creator animation.gif&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;458&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox Creator 사용법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게 만든 코드를 넣고 실행해봅시다.&lt;/p&gt;
&lt;p&gt;지정한 옵션대로 잘 나오면 성공입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;msgbox36.png&quot; data-origin-width=&quot;202&quot; data-origin-height=&quot;147&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B3Sgs/btqFofwP4n6/tO2fmsgXJZXnx66Kh6kAZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B3Sgs/btqFofwP4n6/tO2fmsgXJZXnx66Kh6kAZK/img.png&quot; data-alt=&quot;MsgBox Creator 로 만든 메시지 박스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B3Sgs/btqFofwP4n6/tO2fmsgXJZXnx66Kh6kAZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB3Sgs%2FbtqFofwP4n6%2FtO2fmsgXJZXnx66Kh6kAZK%2Fimg.png&quot; data-filename=&quot;msgbox36.png&quot; data-origin-width=&quot;202&quot; data-origin-height=&quot;147&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox Creator 로 만든 메시지 박스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SciTE4AutoHotkey 에디터, 참 편리하죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메시지 박스 관련 전체 소스 코드는 다음과 같습니다.&lt;/p&gt;
&lt;p&gt;복습해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593845208431&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
MsgBox
return


!2::
;~ MsgBox, Text
MsgBox, 3
return


!3::
;~ MsgBox [, Options, Title, Text, Timeout]
MsgBox, 3, 메시지 박스 연습, 기능이 너무 많아요, 5
return


!4::
MsgBox, 3, 메시지 박스 연습, 기능이 너무 많아요, 5

IfMsgBox, Yes
{
	MsgBox, Yes 를 눌렀습니다.
}

IfMsgBox, No
{
	MsgBox, No 를 눌렀습니다.
}

IfMsgBox, Cancel
{
	MsgBox, Cancel 를 눌렀습니다.
}
return


!5::
MsgBox, 36, 제목, 내용
return&lt;/code&gt;&lt;/pre&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/22</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B0%95%EC%8A%A43#entry22comment</comments>
      <pubDate>Sat, 4 Jul 2020 15:44:12 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 메시지 박스(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B0%95%EC%8A%A42</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키] 메시지 박스(2)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;전 시간에 메시지 박스의 다양한 형태에 대해 살펴보셨으면,&lt;/p&gt;
&lt;p&gt;이제 그 다양한 형태의 메시지 박스를 어떻게 다룰 것인가에 대해 알아보도록 해요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예를 들어, 메시지 박스의 버튼 Yes를 누를 때와 No를 누를 때,&lt;/p&gt;
&lt;p&gt;각각 다른 명령어를 내리는 거죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;IfMsgBox 라는 명령어를 사용합니다.&lt;/p&gt;
&lt;p&gt;오토핫키는 명령어가 대체로 직관적입니다.&lt;/p&gt;
&lt;p&gt;IfMsgBox 도 마찬가지입니다.&lt;/p&gt;
&lt;p&gt;'만약' + '메시지 박스'가 결합되어 있기 때문에&lt;/p&gt;
&lt;p&gt;어떤 메시지 박스냐에 따라 뭔가를 결정할 때 쓴다고 예상이 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;간단 도움말을 살펴 보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593843056289&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;IfMsgBox, Yes|No|OK|Cancel|Abort|Ignore|Retry|Timeout&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;인자 하나를 쓸 수 있으며,&lt;/p&gt;
&lt;p&gt;여러 가지 옵션 중 하나를 선택할 수 있네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그 의미를 한번 추측해보세요.&lt;/p&gt;
&lt;p&gt;만약 메시지 박스가, Yes 면?&lt;/p&gt;
&lt;p&gt;만약 메시지 박스가 No 면?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;네, 맞습니다.&lt;/p&gt;
&lt;p&gt;인자에 들어가는 내용은 Button Name입니다.&lt;/p&gt;
&lt;p&gt;어떤 버튼을 누르냐에 따라 어떤 명령을 할지 분기하여 명령할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실습을 한번 해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Yes/No/Cancel 버튼을 지난 시간에 예로 들었으니,&lt;/p&gt;
&lt;p&gt;그대로 사용해볼게요.&lt;/p&gt;
&lt;p&gt;If 라는 명령어가 들어가면,&lt;/p&gt;
&lt;p&gt;중괄호로 블록을 구분해 주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593843399887&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!4::
MsgBox, 3, 메시지 박스 연습, 기능이 너무 많아요, 5

IfMsgBox, Yes
{
	MsgBox, Yes 를 눌렀습니다.
}

IfMsgBox, No
{
	MsgBox, No 를 눌렀습니다.
}

IfMsgBox, Cancel
{
	MsgBox, Cancel 를 눌렀습니다.
}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다 작성하셨으면, 오토핫키를 실행하고, Alt + 4 를 눌러보세요.&lt;/p&gt;
&lt;p&gt;각 버튼을 눌러봅니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;ifmsgbox.png&quot; data-origin-width=&quot;134&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIPjKo/btqFnPSOH5K/CQlZKgOs8V8qyPvCtmchak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIPjKo/btqFnPSOH5K/CQlZKgOs8V8qyPvCtmchak/img.png&quot; data-alt=&quot;MsgBox&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIPjKo/btqFnPSOH5K/CQlZKgOs8V8qyPvCtmchak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIPjKo%2FbtqFnPSOH5K%2FCQlZKgOs8V8qyPvCtmchak%2Fimg.png&quot; data-filename=&quot;ifmsgbox.png&quot; data-origin-width=&quot;134&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;각 버튼을 눌렀을 때에 알맞은 메시지 박스가 나타나나요?&lt;/p&gt;
&lt;p&gt;네, 아주 잘하셨습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/21</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B0%95%EC%8A%A42#entry21comment</comments>
      <pubDate>Sat, 4 Jul 2020 15:20:42 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 메시지 박스(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B0%95%EC%8A%A41</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;메시지&amp;nbsp;박스(1)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메시지 박스 명령어는 전 시간에 여러 차례 다루었기 때문에&lt;/p&gt;
&lt;p&gt;어느 정도 익숙하실 거라 생각합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그래도 행여나 기억이 나지 않으실 수도 있으니,&lt;/p&gt;
&lt;p&gt;힌트를 드릴게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593664493489&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, Hello World!&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 생각나셨나요?&lt;/p&gt;
&lt;p&gt;네, 좋습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번 시간에는 이 메시지 박스 명령어에 대해,&lt;/p&gt;
&lt;p&gt;조금 더 넓고 깊게 알아보도록 할게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MsgBox 명령어를 타이핑하고 콤마(,)를 누르면,&lt;/p&gt;
&lt;p&gt;다음과 같은 간단 도움말이 나타납니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593664683596&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox [, Options, Title, Text, Timeout]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;으잉? 지금까지 써오던 거랑 뭔가 많이 다른데요?&lt;/p&gt;
&lt;p&gt;간단 도움말에서는 저런 형태로 알려주고 있지만,&lt;/p&gt;
&lt;p&gt;사실은 더 자주 쓰이는 문법은 첫 번째 인자에 단순히 Text를 입력하는 것으로 끝나죠.&lt;/p&gt;
&lt;p&gt;따라서 다음의 두 가지 형태로 알아두시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593664815543&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, Text
MsgBox [, Options, Title, Text, Timeout]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;첫 번째 문법은 Hello World! 를 출력하면서 이미 마스터하신 것과 진배없으니,&lt;/p&gt;
&lt;p&gt;두 번째 문법에 대해 집중적으로 설명드릴게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;모든 인자가 대괄호 안에 있기 때문에 다 생략이 가능합니다.&lt;/p&gt;
&lt;p&gt;다 생략하는 것이 무슨 의미가 있냐 싶긴 하지만,&lt;/p&gt;
&lt;p&gt;어떤 결과가 나오는지 한번 해보고 넘어갈게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593665141869&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
MsgBox
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키 실행 후, Alt + 1을 눌러봅니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;msgbox.png&quot; data-origin-width=&quot;154&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxhVlt/btqFhk7mjWf/xkmxd0xq8mcCgtwBrTVL70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxhVlt/btqFhk7mjWf/xkmxd0xq8mcCgtwBrTVL70/img.png&quot; data-alt=&quot;MsgBox&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxhVlt/btqFhk7mjWf/xkmxd0xq8mcCgtwBrTVL70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxhVlt%2FbtqFhk7mjWf%2Fxkmxd0xq8mcCgtwBrTVL70%2Fimg.png&quot; data-filename=&quot;msgbox.png&quot; data-origin-width=&quot;154&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;'Press OK to continue.'가 뜨는군요.&lt;/p&gt;
&lt;p&gt;그렇답니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;몸을 풀었으니,&lt;/p&gt;
&lt;p&gt;이제 첫 번째 인자인 Options부터 하나씩 살펴보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메시지 박스의 종류와 가능한 버튼 조합을 나타냅니다.&lt;/p&gt;
&lt;p&gt;비어 있거나 생략하면, 기본값이 들어가며, 그 기본값은 0입니다.&lt;/p&gt;
&lt;p&gt;사용할 수 있는 값들은 다음의 표를 참고하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;msgbox_options.png&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;877&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rUsOC/btqFg4RjGb8/yhj3Fcd6fZTGhEfawlYyx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rUsOC/btqFg4RjGb8/yhj3Fcd6fZTGhEfawlYyx0/img.png&quot; data-alt=&quot;MsgBox Options&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rUsOC/btqFg4RjGb8/yhj3Fcd6fZTGhEfawlYyx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrUsOC%2FbtqFg4RjGb8%2Fyhj3Fcd6fZTGhEfawlYyx0%2Fimg.png&quot; data-filename=&quot;msgbox_options.png&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;877&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox Options&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;옵션이 너무 많아서 갑자기 공부를 게을리하고 싶어 지셨나요?&lt;/p&gt;
&lt;p&gt;다 무시하고 딱&amp;nbsp;하나만 직접 해볼까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Yes/No/Cancel 기능이 나타난다고 하는 값을 넣어볼게요.&lt;/p&gt;
&lt;p&gt;십진수로 3이네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593666197245&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
MsgBox, 3
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키를 다시 실행한 후, Alt + 2 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;원하는 결과가 나왔나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;웬 '3' 이 떡하니 그냥 출력되는군요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;msgbox_3.png&quot; data-origin-width=&quot;131&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YWWQ0/btqFjqMcRG2/cDjvww5XG64gpYN8c0N0zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YWWQ0/btqFjqMcRG2/cDjvww5XG64gpYN8c0N0zk/img.png&quot; data-alt=&quot;MsgBox&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YWWQ0/btqFjqMcRG2/cDjvww5XG64gpYN8c0N0zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYWWQ0%2FbtqFjqMcRG2%2FcDjvww5XG64gpYN8c0N0zk%2Fimg.png&quot; data-filename=&quot;msgbox_3.png&quot; data-origin-width=&quot;131&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그 이유는 이렇습니다.&lt;/p&gt;
&lt;p&gt;MsgBox에 두 가지 문법이 있다고 말씀드렸고,&lt;/p&gt;
&lt;p&gt;Options 인자 자리에 숫자 '3'만 넣게 되면,&lt;/p&gt;
&lt;p&gt;MsgBox의 첫 번째 문법이 적용되었기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;따라서 뒤쪽에 따라붙는 인자들도 같이 넣어야&lt;/p&gt;
&lt;p&gt;두 번째 문법을 사용할 수 있게 된다는 결론이 나오네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇다면, 이왕 하는 김에 모든 인자 값을 넣어 실행해보도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593666385568&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
;~ MsgBox, Text
MsgBox, 3
return


!3::
;~ MsgBox [, Options, Title, Text, Timeout]
MsgBox, 3, 메시지 박스 연습, 기능이 너무 많아요, 5
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;첫 번째 인자에는 사용할 옵션을 넣었습니다.&lt;/p&gt;
&lt;p&gt;두 번째 인자에는 메시지 박스의 제목을 넣었고,&lt;/p&gt;
&lt;p&gt;세 번째 인자에는 메시지 박스에 출력할 내용을,&lt;/p&gt;
&lt;p&gt;네 번째 인자에는 타임아웃 시간을 넣었습니다.&lt;/p&gt;
&lt;p&gt;이때 주의하실 점은 여기에서는 millisecond 단위가 아니라 second 단위입니다.&lt;/p&gt;
&lt;p&gt;해당 시간이 지나면 자동으로 메시지 박스를 닫는 기능을 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드를 모두 작성하셨으면,&lt;/p&gt;
&lt;p&gt;오토핫키 재실행 및 Alt + 3 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;msgbox_options3.png&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS2LEy/btqFknBrNpw/tJ3iERkA7cp6kmtbRUi0a0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS2LEy/btqFknBrNpw/tJ3iERkA7cp6kmtbRUi0a0/img.png&quot; data-alt=&quot;MsgBox&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS2LEy/btqFknBrNpw/tJ3iERkA7cp6kmtbRUi0a0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS2LEy%2FbtqFknBrNpw%2FtJ3iERkA7cp6kmtbRUi0a0%2Fimg.png&quot; data-filename=&quot;msgbox_options3.png&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기능이 너무 많지만,&lt;/p&gt;
&lt;p&gt;옵션에 따라 이런 식으로 메시지 박스의 형태가 바뀐다는 것만 우선 알고 계시면 되겠네요.&lt;/p&gt;
&lt;p&gt;모두 잊어버리고, 필요할 때 찾아서 쓰시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;벌써부터 더 깊게 알고 싶으시면 다음의 링크를 통해 공부하셔도 좋습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/commands/MsgBox.htm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;autohotkeykr.sourceforge.net/docs/commands/MsgBox.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/20</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B0%95%EC%8A%A41#entry20comment</comments>
      <pubDate>Thu, 2 Jul 2020 14:15:32 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 변수와 표현식(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B3%80%EC%88%98%EC%99%80-%ED%91%9C%ED%98%84%EC%8B%9D2</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;변수와&amp;nbsp;표현식(2)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;표현식으로 변수를 어떻게 사용하는지&lt;/p&gt;
&lt;p&gt;다양한 방법으로 실습해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;전에 배웠던 내용도 일부 포함되어 있으니 복습도 함께 해보세요.&lt;/p&gt;
&lt;p&gt;바로 예제로 들어가겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;준비된 예제는 국어, 영어, 수학의 점수를 변수에 담아두고,&lt;/p&gt;
&lt;p&gt;각 과목의 점수 및 총점과 평균을 메시지 박스에 출력하는 예제입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음의 코드를 작성해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593497340579&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!3::
kor := 100
eng := 80
math := 90

tot := kor + eng + math
avg := tot / 3

MsgBox, 국어 점수는 kor 입니다.    ; (x)
MsgBox, 국어 점수는 %kor% 입니다.  ; (o)

MsgBox, % &quot;영어 점수는 &quot; %eng% &quot; 입니다.&quot;  ; (x) 
MsgBox, % &quot;영어 점수는 &quot; eng &quot; 입니다.&quot;    ; (o)

MsgBox, % &quot;수학 점수는 &quot; + kor + &quot; 입니다.&quot;  ; (x)
MsgBox, % &quot;수학 점수는 &quot; . kor . &quot; 입니다.&quot;  ; (o)

MsgBox, &quot;국영수 총점은 &quot; %tot% &quot; 입니다.&quot;  ; (x)
MsgBox, % &quot;국영수 총점은 &quot; tot &quot; 입니다.&quot;  ; (o)

MsgBox, 국영수 평균은`n%avg% 입니다.  ; 줄바꿈 기호(`n)
MsgBox, 국영수 평균은`t%avg% 입니다.  ; 탭 기호(`t)
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;국어는 100점, 영어는 80점, 수학은 90점을 각 변수에 대입하였습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;tot 변수에는 국영수 총점을 계산하여 대입하였으며,&lt;/p&gt;
&lt;p&gt;연산자는 더하기(+) 기호를 사용하였습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;avg 변수에는 국영수 총점을 세 과목으로 나누어 평균값을 대입하였습니다.&lt;/p&gt;
&lt;p&gt;이미 총점을 계산하여 담아놓은 변수인 tot 가 있기 때문에 tot 를 과목수 3으로 나누었습니다.&lt;/p&gt;
&lt;p&gt;연산자는 나누기(/) 기호를 사용하였습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;국어 점수부터 살펴볼게요.&lt;/p&gt;
&lt;p&gt;출력을 원하는 형태는 이렇습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1593522239270&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;국어 점수는 100 입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실행해보시면 아시겠지만, 첫 번째 메시지 박스는,&lt;/p&gt;
&lt;p&gt;점수 대신 kor 이라는 변수명이 그대로 나타납니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;v1.png&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;200&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daILAV/btqFfuImmtJ/6SANr53xUZpIf3eCO9sQ01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daILAV/btqFfuImmtJ/6SANr53xUZpIf3eCO9sQ01/img.png&quot; data-alt=&quot;국어 점수 출력 예제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daILAV/btqFfuImmtJ/6SANr53xUZpIf3eCO9sQ01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaILAV%2FbtqFfuImmtJ%2F6SANr53xUZpIf3eCO9sQ01%2Fimg.png&quot; data-filename=&quot;v1.png&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;200&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;국어 점수 출력 예제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;변수값을 꺼내오려면 '%' 기호가 있어야겠죠.&lt;/p&gt;
&lt;p&gt;그래서 kor 변수의 양쪽에 '%' 기호를 감싸면 우리가 원하는 형태로 출력이 되는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593523650803&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, 국어 점수는 kor 입니다.    ; (x)
MsgBox, 국어 점수는 %kor% 입니다.  ; (o)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 영어 점수를 살펴보겠습니다.&lt;/p&gt;
&lt;p&gt;출력을 원하는 형태는 이렇습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1593523700350&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;영어 점수는 80 입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;변수 양쪽에 '%' 기호를 감싸는 것 대신,&lt;/p&gt;
&lt;p&gt;명령어와 첫 번째 인자 사이에 '(공백) % (공백)' 을 넣었습니다.&lt;/p&gt;
&lt;p&gt;이때 주의할 점은, 앞에서 '%' 기호를 사용하였을 때는,&lt;/p&gt;
&lt;p&gt;그 뒤에서는 변수명에 '%' 기호를 감싸는 형태로 사용할 수가 없다는 점입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593523976807&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, % &quot;영어 점수는 &quot; %eng% &quot; 입니다.&quot;  ; (x) 
MsgBox, % &quot;영어 점수는 &quot; eng &quot; 입니다.&quot;    ; (o)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;한번 실행해볼까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;국어 점수에 대한 메시지 박스가 또 뜨면 귀찮기 때문에&lt;/p&gt;
&lt;p&gt;끝난 메시지 박스가 있는 줄에서 Ctrl + q 핫키를 눌러 주석 처리하면서 해보세요.&lt;/p&gt;
&lt;p&gt;영어 점수에 관련된 메시지 박스가 끝나면 뒤쪽 것은 당장 볼 것이 아니기 때문에&lt;/p&gt;
&lt;p&gt;F4 키를 눌러 오토핫키를 종료하시고요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;영어점수에 대한 메시지 박스를 확인해보셨나요?&lt;/p&gt;
&lt;p&gt;결과가 어떻게 달라지는지 천천히 살펴보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;200&quot; data-filename=&quot;v2.png&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wHvVD/btqFeNBE451/jjnkTlIm7LTvmfNB5QcAzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wHvVD/btqFeNBE451/jjnkTlIm7LTvmfNB5QcAzK/img.png&quot; data-alt=&quot;영어 점수 출력 예제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wHvVD/btqFeNBE451/jjnkTlIm7LTvmfNB5QcAzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwHvVD%2FbtqFeNBE451%2FjjnkTlIm7LTvmfNB5QcAzK%2Fimg.png&quot; data-origin-width=&quot;482&quot; data-origin-height=&quot;200&quot; data-filename=&quot;v2.png&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;영어 점수 출력 예제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음은 수학 점수입니다.&lt;/p&gt;
&lt;p&gt;출력을 원하는 형태는 이렇습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593524061826&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;수학 점수는 90 입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;마침표(.) 기호를 써서 문자열끼리 붙이는 방법입니다.&lt;/p&gt;
&lt;p&gt;다른 프로그래밍 언어를 써보셨다면 다소 생소하실 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;보통 '+' 기호 또는 '&amp;amp;' 기호를 많이 쓰는데요,&lt;/p&gt;
&lt;p&gt;오토핫키에서는 '.' 기호를 사용합니다.&lt;/p&gt;
&lt;p&gt;때에 따라 붙임 기호를 아예 생략하기도 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593524785247&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, % &quot;수학 점수는 &quot; + kor + &quot; 입니다.&quot;  ; (x)
MsgBox, % &quot;수학 점수는 &quot; . kor . &quot; 입니다.&quot;  ; (o)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;v3.png&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;200&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJPDpz/btqFfYJdcvM/WBnAXWrfHeoWVctieDHO7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJPDpz/btqFfYJdcvM/WBnAXWrfHeoWVctieDHO7k/img.png&quot; data-alt=&quot;수학 점수 출력 예제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJPDpz/btqFfYJdcvM/WBnAXWrfHeoWVctieDHO7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJPDpz%2FbtqFfYJdcvM%2FWBnAXWrfHeoWVctieDHO7k%2Fimg.png&quot; data-filename=&quot;v3.png&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;200&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;수학 점수 출력 예제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;국영수 총점에서는 큰따옴표에 집중해서 살펴보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;우리가 원하는 출력 형태는 이렇습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593525003437&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;국영수 총점은 270 입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MsgBox 명령어 바로 다음에 '%' 기호를 사용하지 않는다면,&lt;/p&gt;
&lt;p&gt;큰따옴표를 굳이 붙이지 않아도 문자열로 인식이 됩니다.&lt;/p&gt;
&lt;p&gt;따라서 큰따옴표를 붙인다면 그 기호마저도 출력해야 하는 문자열로 인식해버립니다.&lt;/p&gt;
&lt;p&gt;각각의 출력 결과를 살펴보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593525093493&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, &quot;국영수 총점은 &quot; %tot% &quot; 입니다.&quot;  ; (x)
MsgBox, % &quot;국영수 총점은 &quot; tot &quot; 입니다.&quot;  ; (o)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;v4.png&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;201&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/balgkh/btqFe3dchJV/pd36oUi08SYsExulk63kQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/balgkh/btqFe3dchJV/pd36oUi08SYsExulk63kQK/img.png&quot; data-alt=&quot;국영수 총점 출력 예제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/balgkh/btqFe3dchJV/pd36oUi08SYsExulk63kQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbalgkh%2FbtqFe3dchJV%2Fpd36oUi08SYsExulk63kQK%2Fimg.png&quot; data-filename=&quot;v4.png&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;201&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;국영수 총점 출력 예제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;국영수 평균 예제에서는 줄 바꿈 기호와 탭 기호를 어떻게 표현하는지 살펴보겠습니다.&lt;/p&gt;
&lt;p&gt;물결 표시(~) 와 같은 키에 위치한 back quote(`) 를 오토핫키에서는 이스케이프(Escape) 문자라고 합니다.&lt;/p&gt;
&lt;p&gt;이 이스케이프 문자 바로 다음에 오는 문자는 그 문자 그대로를 뜻하는 것이 아니라&lt;/p&gt;
&lt;p&gt;특수한 용도로 사용이 된다고 컴퓨터에게 알려주는 역할을 합니다.&lt;/p&gt;
&lt;p&gt;그 특수 용도의 기호는 약속되어 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;대표적인 것이&lt;/p&gt;
&lt;p&gt;`n(줄 바꿈) 기호와 `t(탭) 기호입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;직접 실행해보시면 바로 어떤 기능을 하는지 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593525584847&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, 국영수 평균은`n%avg% 입니다.  ; 줄바꿈 기호(`n)
MsgBox, 국영수 평균은`t%avg% 입니다.  ; 탭 기호(`t)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;v5.png&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;221&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVybVx/btqFe4DckoD/xESaLxZDVYqGJjMlIVp2L1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVybVx/btqFe4DckoD/xESaLxZDVYqGJjMlIVp2L1/img.png&quot; data-alt=&quot;국영수 평균 출력 예제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVybVx/btqFe4DckoD/xESaLxZDVYqGJjMlIVp2L1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVybVx%2FbtqFe4DckoD%2FxESaLxZDVYqGJjMlIVp2L1%2Fimg.png&quot; data-filename=&quot;v5.png&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;221&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;국영수 평균 출력 예제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;소스 코드와 메시지 박스 출력 결과를 비교해가며&lt;/p&gt;
&lt;p&gt;여러 번 실습해보시기를 권해드립니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실행 전에 결과를 먼저 예상을 해보시고,&lt;/p&gt;
&lt;p&gt;예상과 실제 결과가 일치하는지 살펴보는 것이 효과적입니다.&lt;/p&gt;
&lt;p&gt;더 깊이 생각을 하게 되고 더 빨리 익히게 될 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다소 어렵게 느껴질 거라 생각됩니다.&lt;/p&gt;
&lt;p&gt;변수를 사용하는 경우가 매우 많기 때문에&lt;/p&gt;
&lt;p&gt;너무 조바심 갖지 마시고&lt;/p&gt;
&lt;p&gt;사용할 때마다 자연스럽게 차곡차곡 내공을 쌓아가시면 됩니다.&lt;/p&gt;
&lt;p&gt;고생 많으셨습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음의 사이트에서도 잘 설명되어 있으니 읽어보실 것을 추천드립니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/Variables.htm#Expressions&quot;&gt;http://autohotkeykr.sourceforge.net/docs/Variables.htm#Expressions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/19</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B3%80%EC%88%98%EC%99%80-%ED%91%9C%ED%98%84%EC%8B%9D2#entry19comment</comments>
      <pubDate>Tue, 30 Jun 2020 23:11:23 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 변수와 표현식(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B3%80%EC%88%98%EC%99%80-%ED%91%9C%ED%98%84%EC%8B%9D1</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;변수와&amp;nbsp;표현식(1)&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;변수란 무엇일까요?&lt;/p&gt;
&lt;p&gt;앞 시간에 마우스 제어에 대해 배우면서 이미 은근슬쩍 언급하긴 했었네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사전적인 의미부터 바로 살펴보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593404353749&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;어떤 관계나 범위 안에서 여러 가지 값으로 변할 수 있는 수&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;별 것 없어 보이네요.&lt;/p&gt;
&lt;p&gt;간단하게 말씀드리면, '변할 수 있는 수' 가 변수입니다.&lt;/p&gt;
&lt;p&gt;영어로는 Variable 이라고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;마우스 포인터의 위치를 담아두었던 인자가 있었죠. 그것이 변수입니다.&lt;/p&gt;
&lt;p&gt;기억나시나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이런 명령어였죠. 기억이 잘 나지 않으실 수 있으니 간단히 한번 살펴볼게요.&lt;/p&gt;
&lt;pre id=&quot;code_1593404531661&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MouseGetPos [, OutputVarX, OutputVarY, OutputVarWin, OutputVarControl, 1|2|3]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 명령어 줄에서 시작하는 인자들이 다 변수입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;어? 이렇게 복잡하지 않았던 것 같은데? 라고 생각하셨던 분들은 맞습니다.&lt;/p&gt;
&lt;p&gt;모든 인자에 대해 다루지 않고 자주 쓰이는 OutputVarX 와 OutputVarY 까지만 배웠었죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593404942801&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!1::
MouseGetPos, vx, vy
MsgBox, %vx% , %vy%
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;대괄호 안에 있기 때문에 필수적인 요소가 아니기 때문에 생략이 가능합니다.&lt;/p&gt;
&lt;p&gt;이제 조금 기억나시나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;마우스 포인터의 위치 값을 vx 라는 변수와 vy 라는 변수에 각각 넣는 명령어입니다.&lt;/p&gt;
&lt;p&gt;이러한 형태로 변수에 값을 넣는 경우가 있고,&lt;/p&gt;
&lt;p&gt;다른 일반적인 형태로 변수에 값을 넣는 경우가 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌변에는 변수명을 쓰고,&lt;/p&gt;
&lt;p&gt;우변에는 변수값을 입력하는 형태입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593405106387&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
vx := 100
vy := 200
Click, %vx%, %vy%, 0
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;보통의 프로그래밍 언어에서는 등호(=)를 기준으로 좌변과 우변에 각각 변수명과 변수값을 넣습니다.&lt;/p&gt;
&lt;p&gt;하지만 오토핫키에서는 등호(=) 대신 콜론(:) 과 등호(=) 를 같이 씁니다.&lt;/p&gt;
&lt;p&gt;주의하셔야 할 것은 띄어쓰기가 없어야 하고 순서를 지키셔야 한다는 점입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;콜론 + 등호 말고 등호만 적는 문법도 있지만, 굳이 설명을 드리지는 않겠습니다.&lt;/p&gt;
&lt;p&gt;왜냐하면 그렇게 사용할 수 있는 경우가 제한적이며, 콜론 + 등호를 이용하는 방법으로도 커버가 가능하기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;더 알고 싶으시다면 다음의 링크를 참고하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/Variables.htm&quot;&gt;http://autohotkeykr.sourceforge.net/docs/Variables.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드 설명으로 돌아와서,&lt;/p&gt;
&lt;p&gt;앞에서 작성한 코드 블록의 의미는,&lt;/p&gt;
&lt;p&gt;vx 변수에 100 을 입력하고&lt;/p&gt;
&lt;p&gt;vy 변수에 200 을 입력하여&lt;/p&gt;
&lt;p&gt;Click 명령어의 인자에 그 값들을 대입하여 마우스를 이동하는 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;변수에 변수값을 입력하는 방법에는 두 가지가 있다는 것을 말씀드렸습니다.&lt;/p&gt;
&lt;p&gt;명령어에 따라 변수 대입하는 방법이 다르니&lt;/p&gt;
&lt;p&gt;그때그때 알맞은 방법을 선택하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593405862771&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
MouseGetPos, vx, vy
MsgBox, %vx% , %vy%
return


!2::
vx := 100
vy := 200
Click, %vx%, %vy%, 0
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;변수와표현식.png&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;414&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ATzR3/btqFeCSMUqf/6TOsAtl5duI3Q0TI2bduS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ATzR3/btqFeCSMUqf/6TOsAtl5duI3Q0TI2bduS0/img.png&quot; data-alt=&quot;변수 대입법 두 가지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ATzR3/btqFeCSMUqf/6TOsAtl5duI3Q0TI2bduS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FATzR3%2FbtqFeCSMUqf%2F6TOsAtl5duI3Q0TI2bduS0%2Fimg.png&quot; data-filename=&quot;변수와표현식.png&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;414&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;변수 대입법 두 가지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/18</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B3%80%EC%88%98%EC%99%80-%ED%91%9C%ED%98%84%EC%8B%9D1#entry18comment</comments>
      <pubDate>Mon, 29 Jun 2020 13:48:53 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 타이밍 제어</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%83%80%EC%9D%B4%EB%B0%8D-%EC%A0%9C%EC%96%B4</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;타이밍&amp;nbsp;제어&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;타이밍을 제어하는 방법에 대해 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;키보드 제어와 마우스 제어에 대해 공부하면서&lt;/p&gt;
&lt;p&gt;Sleep 명령어에 대해 간단히 다루어본 적이 있습니다.&lt;/p&gt;
&lt;p&gt;잠시 특정 시간 동안 아무것도 하지 말고 대기하라는 의미죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사실, Sleep 은 크게 더 다루어야 할 내용도 딱히 없습니다.&lt;/p&gt;
&lt;p&gt;명령어와 명령어 사이에 Sleep 을 넣게 되면,&lt;/p&gt;
&lt;p&gt;첫 번째 명령을 수행한 후에, 특정 시간만큼 대기하고, 그다음 명령을 수행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;간단 도움말에는 다음과 같이 명기 되어 있습니다.&lt;/p&gt;
&lt;p&gt;Delay 는 millisecond 단위이므로,&lt;/p&gt;
&lt;p&gt;1초를 쉬기 위해서는 인자에 1000 을 입력해야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1593133551066&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Sleep, Delay&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;곧바로 실습해봅시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌표 (200, 200) 을 클릭하고,&lt;/p&gt;
&lt;p&gt;2초 쉬었다가,&lt;/p&gt;
&lt;p&gt;Hello World! 를 입력하는 코드를 작성해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593133337315&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
Click, 100, 100, 1
Sleep, 2000
Send, Hello World{!}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;빈 메모장을 하나 열고 창을 활성화합니다.&lt;/p&gt;
&lt;p&gt;오토핫키를 실행하고 Alt + 1 키를 눌러 실행해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 이런 것은 너무 쉽게 느껴 지시죠?&lt;/p&gt;
&lt;p&gt;실력이 많이 향상되었군요. 잘하셨습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sleep 은 단 한번 대기하는 명령어입니다.&lt;/p&gt;
&lt;p&gt;타이밍을 제어할 수 있는 다른 명령어 중에는&lt;/p&gt;
&lt;p&gt;주기적으로 반복 수행할 수 있는 것도 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SetTimer 라는 명령어입니다.&lt;/p&gt;
&lt;p&gt;간단 도움말을 살펴보면 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1593133778522&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SetTimer, Label [, Period|On|Off]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;전달 인자들을 한번 살펴보겠습니다.&lt;/p&gt;
&lt;p&gt;첫 번째 인자인 Label 에는 어떤 블록을 수행할 것인지를 지정합니다.&lt;/p&gt;
&lt;p&gt;레이블(라벨)은 우리가 일상생활에서 많이 접해본 단어이듯이,&lt;/p&gt;
&lt;p&gt;이름을 정해주는 것입니다. 어떤 이름이냐 하면 코드 블록에 이름을 정하는 것이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Label 을 정의하는 방법은 핫키를 정의하는 것과 유사합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;핫키 정의와 레이블 정의하는 방법을 코드를 통해 비교해보도록 하겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1593134154496&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;; 핫키를 정의하는 방법
!2::
SetTimer, label1, 2000
return


; 레이블을 정의하는 방법
label1:
Click, 500, 500, 0
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;핫키는 우측에 콜론(:) 두 개를 붙이는 반면,&lt;/p&gt;
&lt;p&gt;레이블은 우측에 콜론을 한 개만 붙입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드 블록은 좀 더 보기 좋게 하기 위해&lt;/p&gt;
&lt;p&gt;중괄호({}) 를 씌우기도 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593134218022&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
{
	SetTimer, label1, 2000
	return
}


label1:
{
	Click, 500, 500, 0
	return
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;중괄호 안에는 탭을 입력해서 들여 쓰기(Indentation)를 하는 것이 좋습니다.&lt;/p&gt;
&lt;p&gt;실행 결과에는 영향을 주지 않지만,&lt;/p&gt;
&lt;p&gt;가독성을 좋게 하기 위해서는 단계별로 들여 쓰기 할 것을 권장합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;들여 쓰기를 권장한다고 표현했지만, 사실은 필수적이라고 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;간단한 코드에서는 크게 차이가 없지만,&lt;/p&gt;
&lt;p&gt;나중에 다루게 될 반복문이나 조건문 등이 등장하면&lt;/p&gt;
&lt;p&gt;들여쓰기를 하지 않고서는 코드를 정확하고 빨리 파악할 수가 없습니다.&lt;/p&gt;
&lt;p&gt;따라서 들여 쓰기에는 각별히 신경 쓰는 습관을 기르시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다시 명령어 설명으로 되돌아가겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1593134743004&quot; class=&quot;html xml&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SetTimer, Label [, Period|On|Off]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;첫 번째 인자가 Label 이었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;두 번째 인자에는 여러 가지 중 하나를 쓸 수 있으며,&lt;/p&gt;
&lt;p&gt;대괄호 안에 있기 때문에 필수적이 아닌 선택적인 요소입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Period 에는 반복할 주기를 입력할 수 있습니다.&lt;/p&gt;
&lt;p&gt;Sleep 과 마찬가지로 millisecond 단위로 입력하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Period 대신에 On 을 입력하면,&lt;/p&gt;
&lt;p&gt;기존에 중단되었던 타이머를 다시 활성화합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Off 를 입력하면 지정한 타이머를 비활성화합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;두 번째 인자를 생략하면 기본값인 On 이 사용되며,&lt;/p&gt;
&lt;p&gt;250ms 마다 Label1 블록을 반복 수행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;신버전에서는 두 번째 인자에 Delete 옵션도 지정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;Off 와 다르게 Delete 하게 되면 해당 타이머는 다시 활성화할 수 없습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 사실 세 번째 인자도 있습니다.&lt;/p&gt;
&lt;p&gt;Priority(우선순위) 를 지정하는 인자입니다.&lt;/p&gt;
&lt;p&gt;하지만, SciTE4AutoHotkey 에디터(Version 3.0.06.01) 에는&lt;/p&gt;
&lt;p&gt;기본적으로 간단 도움말이 나타나지 않습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;초심자분들께서는 굳이 아실 필요는 없기 때문에&lt;/p&gt;
&lt;p&gt;더 깊게 알고 싶으시면 다음의 링크를 통해 공부하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/commands/SetTimer.htm&quot;&gt;http://autohotkeykr.sourceforge.net/docs/commands/SetTimer.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sleep 과의 차이점 중 또 한 가지 중요한 특징이 있습니다.&lt;/p&gt;
&lt;p&gt;Sleep 은 대기하는 동안 다음 명령어로 넘어가지 않고 기다립니다.&lt;/p&gt;
&lt;p&gt;하지만, SetTimer 는 지정한 시간을 기다리는 동안&lt;/p&gt;
&lt;p&gt;다음 명령어로 쭉쭉쭉 넘어갑니다.&lt;/p&gt;
&lt;p&gt;그러다가 시간이 되면 해당 블록을 수행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이것을 눈으로 직접 확인하고 싶으시면 다음과 같이 하시면 됩니다.&lt;/p&gt;
&lt;p&gt;우선 코드를 모두 작성합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593135690816&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
Click, 100, 100, 1
Sleep, 2000
Send, Hello World{!}
return


!2::
SetTimer, label1, 2000
return


label1:
Click, 500, 500, 0
return


!3::
SetTimer, label1, 2000

Send, Hello World{!}
Sleep, 500
Send, Hello World{!}
Sleep, 500
Send, Hello World{!}
Sleep, 500
Send, Hello World{!}
Sleep, 500
Send, Hello World{!}
Sleep, 500
Send, Hello World{!}
Sleep, 500
Send, Hello World{!}
Sleep, 500
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키를 다시 실행하고&lt;/p&gt;
&lt;p&gt;메모장 하나를 띄웁니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Alt + 2 를 한번 눌러보세요.&lt;/p&gt;
&lt;p&gt;그러면 label1 이 2초 후에 수행되기 때문에&lt;/p&gt;
&lt;p&gt;마우스 포인터가 (500, 500) 위치로 움직입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;확인하셨으면, F4 키를 눌러 오토핫키를 종료해주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 Alt + 3 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;SetTimer 를 2초로 지정했으며,&lt;/p&gt;
&lt;p&gt;2초간 대기하지 않고 곧바로 Hello World! 가 메모장에 0.5 초마다 반복적으로 찍힙니다.&lt;/p&gt;
&lt;p&gt;그러다가 2초가 되면,&lt;/p&gt;
&lt;p&gt;마우스 포인터가 (500, 500) 으로 이동되는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 점을 활용하면 다양한 형태로 프로그램을 만들 수 있습니다.&lt;/p&gt;
&lt;p&gt;구체적인 사용법까지는 아니더라도 이런 게 있다는 것만 알고 계시면 되겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;타이밍제어.png&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;630&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GbLdp/btqFagCfVfB/V4WKLii0Sl9q7cKwlAUuI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GbLdp/btqFagCfVfB/V4WKLii0Sl9q7cKwlAUuI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GbLdp/btqFagCfVfB/V4WKLii0Sl9q7cKwlAUuI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGbLdp%2FbtqFagCfVfB%2FV4WKLii0Sl9q7cKwlAUuI0%2Fimg.png&quot; data-filename=&quot;타이밍제어.png&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;630&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/17</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%83%80%EC%9D%B4%EB%B0%8D-%EC%A0%9C%EC%96%B4#entry17comment</comments>
      <pubDate>Fri, 26 Jun 2020 10:57:10 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 좌표계(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%A2%8C%ED%91%9C%EA%B3%842</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;좌표계(2)&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;지난 시간에는 좌표계가 무엇인지,&amp;nbsp;어떤 좌표계가 있는지,&lt;/p&gt;
&lt;p&gt;또 좌표를 어떻게 읽는지 등에 대해 알아보았습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번 시간에는 좌표계를 사용하는 방법에 대해 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌표계는 Absolute(Screen), Relative, Client 의 세 가지가 존재하기 때문에&lt;/p&gt;
&lt;p&gt;어떤 좌표계를 사용할 것인지에 대한 명령을 내리는 명령어가 필요합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;CoordMode 라는 명령어입니다.&lt;/p&gt;
&lt;p&gt;간단 도움말을 살펴보면 이렇습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593051231148&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Relative|Window|Client]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌표계는 세 개 밖에 안 되는데 옵션이 뭐가 이렇게도 많네요.&lt;/p&gt;
&lt;p&gt;이것을 다시 크게 분류해보면 조금 더 이해가 쉬울 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593051433728&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CoordMode, TargetType [, CoordinatesType]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;첫 번째 인자에는 어떤 것의 좌표계를 지정할지를 입력합니다.&lt;/p&gt;
&lt;p&gt;여러 가지의 TargetType 이 있지만, 자주 쓰는 것은 Pixel 과 Mouse 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;마우스 제어와 관련된 것의 좌표계를 지정하려면 Mouse 를 입력하면 됩니다.&lt;/p&gt;
&lt;p&gt;아직 다루지는 않았으나, 픽셀이나 이미지 등에 대한 좌표계를 지정하려면 Mouse 대신 Pixel 을 입력하면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;두 번째 인자에는 어떤 좌표계를 사용할 것인지 입력합니다.&lt;/p&gt;
&lt;p&gt;기본값은 Absolute(Screen) 이기 때문에 생략하면 Screen 좌표계를 사용합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Relative 와 Window 는 동일하며,&lt;/p&gt;
&lt;p&gt;구버전에서의 Relative 가 신버전에서는 좀 더 직관적인 단어인 Window 가 추가되었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;보다 자세한 내용은 다음의 링크를 통해 알아보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/commands/CoordMode.htm&quot;&gt;http://autohotkeykr.sourceforge.net/docs/commands/CoordMode.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌표계를 어떻게 지정하느냐에 따라,&lt;/p&gt;
&lt;p&gt;실제로 어떤 변화가 있는지 실습해보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1593052063632&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
CoordMode, Mouse, Screen
Click, 0, 0, 0
Sleep, 2000

CoordMode, Mouse, Relative
Click, 0, 0, 0
Sleep, 2000

CoordMode, Mouse, Client
Click, 0, 0, 0
Sleep, 2000

CoordMode, Mouse, Window
Click, 0, 0, 0
Sleep, 2000
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;mouse제어.png&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;616&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JtyDc/btqE5OVujsm/sI0YG6ebw6BuaXPZzJ6tY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JtyDc/btqE5OVujsm/sI0YG6ebw6BuaXPZzJ6tY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JtyDc/btqE5OVujsm/sI0YG6ebw6BuaXPZzJ6tY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJtyDc%2FbtqE5OVujsm%2FsI0YG6ebw6BuaXPZzJ6tY0%2Fimg.png&quot; data-filename=&quot;mouse제어.png&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;616&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/16</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%A2%8C%ED%91%9C%EA%B3%842#entry16comment</comments>
      <pubDate>Thu, 25 Jun 2020 11:31:17 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 좌표계(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%A2%8C%ED%91%9C%EA%B3%841</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;좌표계(1)&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;마우스 제어에 대해 알려드리면서, 좌표계에 대해 살짝 언급했습니다.&lt;/p&gt;
&lt;p&gt;이제 그 좌표계에 대해 조금 더 자세히 알아보도록 하시죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌표계에는 세 가지가 있습니다.&lt;/p&gt;
&lt;p&gt;Absolute, Relative, Client 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Window Active Info 툴을 이용하면&lt;/p&gt;
&lt;p&gt;각 좌표계에 대한 마우스 포지션을 쉽게 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Active Window Info 4.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;726&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSFFyH/btqE6wrUoav/yOxt30iQAB4QVlbH8YZ3m1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSFFyH/btqE6wrUoav/yOxt30iQAB4QVlbH8YZ3m1/img.png&quot; data-alt=&quot;좌표계&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSFFyH/btqE6wrUoav/yOxt30iQAB4QVlbH8YZ3m1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSFFyH%2FbtqE6wrUoav%2FyOxt30iQAB4QVlbH8YZ3m1%2Fimg.png&quot; data-filename=&quot;Active Window Info 4.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;726&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;좌표계&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Absolute 는 전체 화면을 기준으로 좌상단을 (0, 0) 으로 하는 좌표계입니다.&lt;/p&gt;
&lt;p&gt;Absolute 대신 Screen 이라고도 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;모니터가 여러 개라면 주 모니터의 좌상단을 (0, 0) 으로 하며,&lt;/p&gt;
&lt;p&gt;기준점에서 오른쪽으로 갈수록 x 값이 커지고, 아래쪽으로 갈수록 y 값이 커집니다.&lt;/p&gt;
&lt;p&gt;왼쪽이나 위쪽으로 가면 음수 값을 가지게 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;coord1.png&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;1018&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP1syw/btqE4qGRq6o/I39jh9gxZKwDWicuC9l9w1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP1syw/btqE4qGRq6o/I39jh9gxZKwDWicuC9l9w1/img.png&quot; data-alt=&quot;주 모니터가 왼쪽에 있는 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP1syw/btqE4qGRq6o/I39jh9gxZKwDWicuC9l9w1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP1syw%2FbtqE4qGRq6o%2FI39jh9gxZKwDWicuC9l9w1%2Fimg.png&quot; data-filename=&quot;coord1.png&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;1018&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;주 모니터가 왼쪽에 있는 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;coord2.png&quot; data-origin-width=&quot;1884&quot; data-origin-height=&quot;1018&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhzqu3/btqE57sBnJp/yoStzSrkZV0WhApE548UMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhzqu3/btqE57sBnJp/yoStzSrkZV0WhApE548UMK/img.png&quot; data-alt=&quot;주 모니터가 오른쪽에 있는 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhzqu3/btqE57sBnJp/yoStzSrkZV0WhApE548UMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhzqu3%2FbtqE57sBnJp%2FyoStzSrkZV0WhApE548UMK%2Fimg.png&quot; data-filename=&quot;coord2.png&quot; data-origin-width=&quot;1884&quot; data-origin-height=&quot;1018&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;주 모니터가 오른쪽에 있는 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;coord3.png&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;1248&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vj9eJ/btqE6wrVUIv/aHYbgkjFc8Zl6zjJ81J6PK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vj9eJ/btqE6wrVUIv/aHYbgkjFc8Zl6zjJ81J6PK/img.png&quot; data-alt=&quot;주 모니터가 위쪽에 있는 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vj9eJ/btqE6wrVUIv/aHYbgkjFc8Zl6zjJ81J6PK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvj9eJ%2FbtqE6wrVUIv%2FaHYbgkjFc8Zl6zjJ81J6PK%2Fimg.png&quot; data-filename=&quot;coord3.png&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;1248&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;주 모니터가 위쪽에 있는 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;coord4.png&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;1130&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w1ojf/btqE6NAcQPP/tK7B1kDBLb8oIbkvW2WaSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w1ojf/btqE6NAcQPP/tK7B1kDBLb8oIbkvW2WaSK/img.png&quot; data-alt=&quot;주 모니터가 아래쪽에 있는 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w1ojf/btqE6NAcQPP/tK7B1kDBLb8oIbkvW2WaSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw1ojf%2FbtqE6NAcQPP%2FtK7B1kDBLb8oIbkvW2WaSK%2Fimg.png&quot; data-filename=&quot;coord4.png&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;1130&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;주 모니터가 아래쪽에 있는 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이것이 Absolute(Screen) 좌표계입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;두 번째 좌표계는 Relative 좌표계입니다.&lt;/p&gt;
&lt;p&gt;현재 활성화되어 있는 창의 좌상단을 (0, 0) 으로 하는 좌표계입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Absolute(Screen) 좌표계에서는 창을 이동하면&lt;/p&gt;
&lt;p&gt;특정 아이콘을 클릭하기 위해서는 좌표값도 수정해 주어야 하지만,&lt;/p&gt;
&lt;p&gt;Relative 좌표계에서는 창을 이동하더라도&lt;/p&gt;
&lt;p&gt;아이콘의 좌표값이 바뀌지 않기 때문에 이 점을 이용하면 편리합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;coord_screen.png&quot; data-origin-width=&quot;1892&quot; data-origin-height=&quot;1125&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YRcUo/btqE5QdzV6l/rETeJi9IdDzqIS0VvkjqVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YRcUo/btqE5QdzV6l/rETeJi9IdDzqIS0VvkjqVk/img.png&quot; data-alt=&quot;Absolute (Screen)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YRcUo/btqE5QdzV6l/rETeJi9IdDzqIS0VvkjqVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYRcUo%2FbtqE5QdzV6l%2FrETeJi9IdDzqIS0VvkjqVk%2Fimg.png&quot; data-filename=&quot;coord_screen.png&quot; data-origin-width=&quot;1892&quot; data-origin-height=&quot;1125&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Absolute (Screen)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1894&quot; data-origin-height=&quot;1125&quot; data-filename=&quot;coord_relative.png&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chxdjq/btqE4D0ohut/8MitLUYLoPUtM0RuLdTNJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chxdjq/btqE4D0ohut/8MitLUYLoPUtM0RuLdTNJk/img.png&quot; data-alt=&quot;Relative&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chxdjq/btqE4D0ohut/8MitLUYLoPUtM0RuLdTNJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fchxdjq%2FbtqE4D0ohut%2F8MitLUYLoPUtM0RuLdTNJk%2Fimg.png&quot; data-origin-width=&quot;1894&quot; data-origin-height=&quot;1125&quot; data-filename=&quot;coord_relative.png&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Relative&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Client 좌표계는 Relative 와 거의 비슷합니다.&lt;/p&gt;
&lt;p&gt;다른 점이 있다면,&lt;/p&gt;
&lt;p&gt;제목 표시줄과 메뉴바, 그리고 테두리를 제외한 활성 창의&lt;/p&gt;
&lt;p&gt;메인이 되는 화면의 좌상단을 (0, 0) 으로 기준 삼습니다.&lt;/p&gt;
&lt;p&gt;이 영역을 클라이언트(Client) 영역이라고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;윈도 버전과 테마에 따라 제목 표시줄과 메뉴바의 크기가 달라질 수 있기 때문에&lt;/p&gt;
&lt;p&gt;Client 좌표계를 이용하면 OS 의 환경을 덜 받도록 코딩할 수 있습니다.&lt;/p&gt;
&lt;p&gt;제목 표시줄과 메뉴바의 특정 위치를 클릭하거나 하지 않는 이상에는&lt;/p&gt;
&lt;p&gt;이 Client 좌표계를 이용하실 것을 권장합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;point.png&quot; data-origin-width=&quot;1732&quot; data-origin-height=&quot;1159&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQ4OhM/btqE4DsvCMT/spO3q6k7iFigKIH4Exg2lK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQ4OhM/btqE4DsvCMT/spO3q6k7iFigKIH4Exg2lK/img.png&quot; data-alt=&quot;좌표계별 기준점&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQ4OhM/btqE4DsvCMT/spO3q6k7iFigKIH4Exg2lK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQ4OhM%2FbtqE4DsvCMT%2FspO3q6k7iFigKIH4Exg2lK%2Fimg.png&quot; data-filename=&quot;point.png&quot; data-origin-width=&quot;1732&quot; data-origin-height=&quot;1159&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;좌표계별 기준점&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/15</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%A2%8C%ED%91%9C%EA%B3%841#entry15comment</comments>
      <pubDate>Wed, 24 Jun 2020 10:55:57 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 마우스 제어(3)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EC%A0%9C%EC%96%B43</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;마우스&amp;nbsp;제어(3)&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;마우스 클릭, 더블클릭, 이동, 드래그까지 배웠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아니 근데 더블 클릭은 언제 배웠냐고요?&lt;/p&gt;
&lt;p&gt;MouseClick 명령어에 ClickCount 인자를 2로 하면 더블클릭입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592913952639&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MouseClick, Left, 100, 100, 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;마우스 클릭은 보통 왼쪽 버튼을 많이 쓰죠.&lt;/p&gt;
&lt;p&gt;그래서 간소화된 명령어가 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Click 이라는 명령어입니다.&lt;/p&gt;
&lt;p&gt;좌클릭을 할 때 쓰이며,&lt;/p&gt;
&lt;p&gt;ClickCount 를 0 으로 하면,&lt;/p&gt;
&lt;p&gt;클릭하지 않고 이동만 하는 용도로도 쓸 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음의 코드를 통해 이해해보시기 바랍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1592914521234&quot; class=&quot;html xml&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; cursor: default; z-index: 1;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!4::
Click			; MouseClick, Left, , , 1 과 동일
Sleep, 2000

Click, , , 2		; MouseClick, Left, , , 2 와 동일
Sleep, 2000

Click, 100, 100, 1	; MouseClick, Left, 100, 100, 1 과 동일
Sleep, 2000

Click, 100, 200, 2	; MouseClick, Left, 100, 100, 2 와 동일
Sleep, 2000

Click, 200, 100, 0	; MouseMove, 100, 100 과 동일
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;인자가 비어 있는 경우에는 그 자리를 그냥 비워 두고 콤마로 다음 인자 값을 넣으시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예를 들어 현재 마우스 포인터가 있는 위치에 더블클릭을 하려고 하면,&lt;/p&gt;
&lt;p&gt;x 좌표와 y 좌표를 비워두고 ClickCount 만 입력하면 되기 때문에&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;다음과 같이 입력하는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592914476906&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Click, , , 2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드 실행 전에, 먼저, 새 메모장을 열어 아무 글자나 상관없으니 창을 가득 채워보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;그리고 그 상태에서 오토핫키를 실행하고 Alt + 4 핫키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;그러면 클릭이 됐는지 더블클릭이 됐는지 이동만 됐는지 쉽게 판별이 가능합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Click.gif&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;779&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRsPme/btqE31UDCAo/Gah0FxLLxGIeEXYmxGMhn0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRsPme/btqE31UDCAo/Gah0FxLLxGIeEXYmxGMhn0/img.gif&quot; data-alt=&quot;다양한 형태의 Click 명령어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRsPme/btqE31UDCAo/Gah0FxLLxGIeEXYmxGMhn0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/dRsPme/btqE31UDCAo/Gah0FxLLxGIeEXYmxGMhn0/img.gif&quot; data-filename=&quot;Click.gif&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;779&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다양한 형태의 Click 명령어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;잘 되시나요?&lt;/p&gt;
&lt;p&gt;네, 잘하셨습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는, 마우스 포인터의 위치 정보를 얻는 또 다른 방법을 하나 알려드릴까 합니다.&lt;/p&gt;
&lt;p&gt;지난번에는 Active Window Info 툴을 이용해 포인터 위치를 알아내는 방법을 알려드렸습니다.&lt;/p&gt;
&lt;p&gt;툴을 쓰지 않고 명령어를 통해 좌표값을 얻는 방법도 있으니 따라 해 보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MouseGetPos 라는 명령어입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1592915072252&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MouseGetPos [, OutputVarX, OutputVarY, OutputVarWin, OutputVarControl, 1|2|3]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;간단 도움말을 살펴보면, MouseGetPos 명령어만 쓰더라도 작동이 되는 것을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;대괄호 안에 있는 것들은 선택적인 인자이기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만 거의 필수적이라고 할 수 있는 인자가 두 개 있습니다.&lt;/p&gt;
&lt;p&gt;바로, OutputVarX 와 OutputVarY 입니다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;그 이유는 좌표값을 가져왔으면 어딘가에 담아두어야 하기 때문입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;그러지 않고서는 이 명령어를 사용하는 의미가 없겠죠.&lt;/p&gt;
&lt;p&gt;OutputVarX 에서 Var 는 Variable 의 약자로, 우리말로는 변수라고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일단 한번 따라서 실습해보고 마저 설명을 드리겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;아직 배우지 않은 내용이 있지만, 일단 실행해보고 유추해보세요.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1592915319770&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!5::
MouseGetPos, vx, vy
MsgBox, %vx%, %vy%
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;마우스 포인터를 이리저리&amp;nbsp; 움직여가며 Alt + 5 키를 눌러보셨나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;현재의 마우스 포인터 좌표값을 vx 와 vy 에 담은 다음&lt;/p&gt;
&lt;p&gt;그 좌표값을 메시지 박스에 출력하는 코드였습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Alt + 5 핫키를 누르는 순간,&lt;/p&gt;
&lt;p&gt;vx 변수와 vy 변수에 x 좌표값과 y 좌표값이 담길 것입니다.&lt;/p&gt;
&lt;p&gt;vx 와 vy 대신 다른 문자를 넣으셔도 됩니다.&lt;/p&gt;
&lt;p&gt;단, 변수는 숫자 또는 특수기호로 시작할 수 없습니다.&lt;/p&gt;
&lt;p&gt;보통은 영문 또는 한글로 변수명을 지정합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;각 변수에 값이 저장을 것이며,&lt;/p&gt;
&lt;p&gt;메시지 박스 명령어에서 그 변수값을 읽어다가 출력해주도록 되어 있습니다.&lt;/p&gt;
&lt;p&gt;vx 와 vy 양쪽에 '%' 기호가 붙어 있습니다.&lt;/p&gt;
&lt;p&gt;이것은 변수의 값을 불러오기 위한 문법입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;AutoHotkey_5miI45jMCa.png&quot; data-origin-width=&quot;131&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU8SxO/btqE6xxnSLk/nm1NHF7qWWUh7VhoLfGtkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU8SxO/btqE6xxnSLk/nm1NHF7qWWUh7VhoLfGtkk/img.png&quot; data-alt=&quot;마우스 좌표 출력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU8SxO/btqE6xxnSLk/nm1NHF7qWWUh7VhoLfGtkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU8SxO%2FbtqE6xxnSLk%2Fnm1NHF7qWWUh7VhoLfGtkk%2Fimg.png&quot; data-filename=&quot;AutoHotkey_5miI45jMCa.png&quot; data-origin-width=&quot;131&quot; data-origin-height=&quot;128&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마우스 좌표 출력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게도 바꿀 수 있습니다.&lt;/p&gt;
&lt;p&gt;아래 세 가지는 모두 동일한 결과를 출력합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1592916156076&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, %vx%, %vy%

MsgBox, % vx &quot;, &quot; vy
MsgBox, % vx . &quot;, &quot; . vy&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;명령어 다음에 한 칸 띄고 '%', 또 한칸 띄고 로 시작하는 문법입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;명령어와 첫 번째 인자 사이에 '%' 기호를 입력하면,&lt;/p&gt;
&lt;p&gt;그 뒤쪽을 표현식(Expression) 형태로 사용한다는 의미가 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;표현식은 vx 라는 문자를 그대로 출력하는 것이 아니라&lt;/p&gt;
&lt;p&gt;그 문자가 가진 값을 연산한 후에 출력합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;표현식에서 문자를 출력하려면 큰따옴표(&quot;) 로 감싸야합니다.&lt;/p&gt;
&lt;p&gt;따라서 x 좌표와 y 좌표 사이에 콤마(,) 를 출력하려면 &quot;, &quot; 를 입력하면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;마지막 명령어 줄에서는 마침표(.) 가 등장합니다.&lt;/p&gt;
&lt;p&gt;이것은 큰 의미는 없으며, 표현식에서 값을 이어준다(?) 는 의미를 명시적으로 나타냅니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;표현식은 앞으로도 계속해서 등장할 테니 차츰 익숙해지기로 합시다.&lt;/p&gt;
&lt;p&gt;'%' 를 변수 양쪽에 두면, 각 변수만 부분적으로 연산하고,&lt;/p&gt;
&lt;p&gt;명령어와 첫 번째 인자 사이에 '%' 와 공백을 두면,&lt;/p&gt;
&lt;p&gt;전체를 표현식으로 바꾼다는 것이 핵심입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다소 어려운 내용이었습니다.&lt;/p&gt;
&lt;p&gt;많이 접하고 익숙해지면 되는 것이니 너무 상심하지 않으셨으면 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;끝으로, 마우스 제어에 관한 전체 실습 코드를 보시며&lt;/p&gt;
&lt;p&gt;복습해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592958411876&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
MouseClick, Left, 300, 300, 1
Sleep, 2000
MouseClick, Right, 400, 300, 1
Sleep, 2000
MouseClick, Left, 400, 200, 2
Sleep, 2000
MouseClick, Left, 300, 200, 1, 0
Sleep, 2000
MouseClick, Left, 300, 300, 1, 100
return


!2::
MouseMove, 624, 219
MouseMove, 488, 663
MouseMove, 848, 385
MouseMove, 399, 382
MouseMove, 767, 661
MouseMove, 624, 219
return


!3::
MouseClickDrag, Left, 624, 219, 488, 663
MouseClickDrag, Left, 488, 663, 848, 385
MouseClickDrag, Left, 848, 385, 399, 382
MouseClickDrag, Left, 399, 382, 767, 661
MouseClickDrag, Left, 767, 661, 624, 219
return


!4::
Click			; MouseClick, Left, , , 1 과 동일
Sleep, 2000

Click, , , 2		; MouseClick, Left, , , 2 와 동일
Sleep, 2000

Click, 100, 100, 1	; MouseClick, Left, 100, 100, 1 과 동일
Sleep, 2000

Click, 100, 200, 2	; MouseClick, Left, 100, 100, 2 와 동일
Sleep, 2000

Click, 200, 100, 0	; MouseMove, 100, 100 과 동일
return


!5::
MouseGetPos, vx, vy
MsgBox, %vx%, %vy%
MsgBox, % vx &quot;, &quot; vy
MsgBox, % vx . &quot;, &quot; . vy
return&lt;/code&gt;&lt;/pre&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/14</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EC%A0%9C%EC%96%B43#entry14comment</comments>
      <pubDate>Tue, 23 Jun 2020 21:58:21 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 마우스 제어(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EC%A0%9C%EC%96%B42</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;마우스&amp;nbsp;제어(2)&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;마우스 포인터만 특정 위치로 이동하고&lt;/p&gt;
&lt;p&gt;클릭은 하지 않아야 할 경우도 있을 수 있겠죠?&lt;/p&gt;
&lt;p&gt;이런 경우에 쓸 수 있는 명령어는 MouseMove 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SciTE4AutoHotkey 에디터에 MouseMove 명령어를 입력 후 콤마(,) 를 입력해보세요.&lt;/p&gt;
&lt;p&gt;다음과 같이 간단한 도움말이 나타납니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592787012750&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MouseMove, X, Y [, Speed, R]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MouseClick 에 비해 더 간단해 보이네요.&lt;/p&gt;
&lt;p&gt;어렵지 않으니 바로 실습해볼까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그냥 하면 심심하니, 별 모양을 그려보도록 해요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592787103836&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
MouseMove, 624, 219
MouseMove, 488, 663
MouseMove, 848, 385
MouseMove, 399, 382
MouseMove, 767, 661
MouseMove, 624, 219
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 좌표들을 어떻게 계산했는지 궁금하지 않으신가요?&lt;/p&gt;
&lt;p&gt;힌트는 Active Window Info 툴을 이용하는 것입니다.&lt;/p&gt;
&lt;p&gt;저는 파워포인트로 별 도형을 그린 후,&lt;/p&gt;
&lt;p&gt;각 꼭짓점의 좌표를 얻어냈습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;마우스를 움직일 때마다 Active Window Info 창에서&lt;/p&gt;
&lt;p&gt;좌표가 실시간으로 바뀌기 때문에 너무 불편하시죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;가장 아래쪽에 보면 (Win+A to freeze display) 라고 적혀 있습니다.&lt;/p&gt;
&lt;p&gt;단축키를 눌러보면 좌표가 멈춰지고,&lt;/p&gt;
&lt;p&gt;이제 마우스를 이동해도 맘 편하게 좌표를 읽을 수 있습니다.&lt;/p&gt;
&lt;p&gt;게다가 굳이 좌표를 타이핑하지 않고 복사해서 쓰셔도 되겠죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;makestar.png&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;572&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTVFTm/btqE2lqKAEl/1N6ijFVlB16P9XfQTvV9ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTVFTm/btqE2lqKAEl/1N6ijFVlB16P9XfQTvV9ok/img.png&quot; data-alt=&quot;Active Window Info 를 활용한 별모양 좌표 획득&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTVFTm/btqE2lqKAEl/1N6ijFVlB16P9XfQTvV9ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTVFTm%2FbtqE2lqKAEl%2F1N6ijFVlB16P9XfQTvV9ok%2Fimg.png&quot; data-filename=&quot;makestar.png&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;572&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Active Window Info 를 활용한 별모양 좌표 획득&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드를 모두 작성하셨으면 오토핫키를 실행하세요.&lt;/p&gt;
&lt;p&gt;Alt + 2 핫키를 누르면 별 모양을 따라 마우스 포인터가 이동하나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;파워포인트 창을 활성화한 상태에서도 핫키를 눌러보고,&lt;/p&gt;
&lt;p&gt;메모장이나 기타 다른 창을 활성화한 상태에서도 핫키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;그리고 활성화된 창을 크기를 바꾸거나 창 위치를 바꾼 상태에서도 핫키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;MouseMove.gif&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;504&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vcDKh/btqE1uWgVIJ/tUD5eIc7RzatwkkTtNQj8K/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vcDKh/btqE1uWgVIJ/tUD5eIc7RzatwkkTtNQj8K/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vcDKh/btqE1uWgVIJ/tUD5eIc7RzatwkkTtNQj8K/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/vcDKh/btqE1uWgVIJ/tUD5eIc7RzatwkkTtNQj8K/img.gif&quot; data-filename=&quot;MouseMove.gif&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;504&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;재미있으셨나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 별을 직접 그려보시죠.&lt;/p&gt;
&lt;p&gt;어떻게 하냐고요?&lt;/p&gt;
&lt;p&gt;컴퓨터한테 펜을 쥐어주고 좌표 알려주면 되지 않을까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우선, 그림판을 실행해보세요. 원하시는 펜과 색상을 골라주세요.&lt;/p&gt;
&lt;p&gt;그림판 위에서 마우스를 클릭한 상태에서 드래그하면 그림이 그려지나요?&lt;/p&gt;
&lt;p&gt;네, 잘 그려진다면 이제 클릭한 상태로 드래그하는 명령어만 컴퓨터한테 내려주면 되겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MouseClickDrag 라는 명령어입니다.&lt;/p&gt;
&lt;p&gt;간단 도움말을 보고 싶으시면 MouseClickDrag 명령어 입력 후에 콤마(,) 를 찍어주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592789309991&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MouseClickDrag, WhichButton, X1, Y1, X2, Y2 [, Speed, R]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;WhichButton 인자는 마우스의 어떤 버튼을 사용할지를 입력해주시면 됩니다.&lt;/p&gt;
&lt;p&gt;앞서 MouseClick 명령어를 배울 때 다루었던 내용이니 참고해주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;X1 과 X2 는 시작점을 뜻하며,&lt;/p&gt;
&lt;p&gt;X2 와 Y2 는 끝점을 뜻합니다.&lt;/p&gt;
&lt;p&gt;드래그를 할 때는 항상 어디에서 어디까지 할지가 정해져 있다는 점을 생각하며 이해해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그럼 이제, 앞에서 작성해두었던 좌표를 이용하여&lt;/p&gt;
&lt;p&gt;다음과 같이 코드를 작성해볼게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592789034300&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
MouseMove, 624, 219
MouseMove, 488, 663
MouseMove, 848, 385
MouseMove, 399, 382
MouseMove, 767, 661
MouseMove, 624, 219
return


!3::
MouseClickDrag, 624, 219
MouseClickDrag, 488, 663
MouseClickDrag, 848, 385
MouseClickDrag, 399, 382
MouseClickDrag, 767, 661
MouseClickDrag, 624, 219
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키를 다시 실행하고,&lt;/p&gt;
&lt;p&gt;그림판을 활성화한 상태에서,&lt;/p&gt;
&lt;p&gt;Alt + 3 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;별표가 그려졌나요?&lt;/p&gt;
&lt;p&gt;색상을 바꾸어서 또 한 번 핫키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;stars.gif&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;865&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDxvJQ/btqE31rBdO8/QKuT6EKZyLqodYseEso8KK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDxvJQ/btqE31rBdO8/QKuT6EKZyLqodYseEso8KK/img.gif&quot; data-alt=&quot;그림판에 별 모양 그리기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDxvJQ/btqE31rBdO8/QKuT6EKZyLqodYseEso8KK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/dDxvJQ/btqE31rBdO8/QKuT6EKZyLqodYseEso8KK/img.gif&quot; data-filename=&quot;stars.gif&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;865&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림판에 별 모양 그리기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;재미있으셨다니 다행입니다.&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/13</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EC%A0%9C%EC%96%B42#entry13comment</comments>
      <pubDate>Mon, 22 Jun 2020 10:55:09 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 마우스 제어(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EC%A0%9C%EC%96%B41</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;마우스&amp;nbsp;제어(1)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;키보드 제어하는 방법을 배웠으니,&lt;/p&gt;
&lt;p&gt;이번에는 마우스 제어하는 방법에 대해 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;마우스 동작의 가장 기본인 클릭부터 알아보시죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SciTE4AutoHotkey 에디터에서 새 파일을 열고 다음의 코드를 작성해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592749388410&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
MouseClick, Left, 300, 300, 1
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;대충 무슨 의미인지 짐작은 되실 겁니다.&lt;/p&gt;
&lt;p&gt;MouseClick 명령어는 말 그대로 마우스를 클릭한다는 뜻이고,&lt;/p&gt;
&lt;p&gt;Left 는 왼쪽 버튼을 뜻하며,&lt;/p&gt;
&lt;p&gt;300, 300 은 x, y 좌표 (300, 300) 을 의미합니다.&lt;/p&gt;
&lt;p&gt;마지막에 있는 1은 한 번 클릭한다는 의미입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사실 에디터에서 MouseClick 이라는 명령어를 입력하고,&lt;/p&gt;
&lt;p&gt;콤마(,) 를 입력하면 간단한 도움말이 나타나므로 쉽게 명령어를 입력할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592752516725&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MouseClick, WhichButton, [, X, Y, ClickCount, Speed, D|U, R]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;대괄호 안에 있는 것들은 필수가 아니라고 설명드렸습니다.&lt;/p&gt;
&lt;p&gt;잘 기억이 나지 않으신다면 잠시 복습하고 오셔도 좋습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;앞에서 작성한 코드에서는 ClickCount 까지만 입력을 했고,&lt;/p&gt;
&lt;p&gt;Speed 부터는 생략한 것을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;잘 사용하지 않는 인자들이니, 따로 설명은 드리지 않겠습니다.&lt;/p&gt;
&lt;p&gt;궁금하신 분들은 다음의 링크를 참조하세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/commands/MouseClick.htm&quot;&gt;http://autohotkeykr.sourceforge.net/docs/commands/MouseClick.htm&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1592752762584&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;MouseClick&quot; data-og-description=&quot;&quot; data-og-host=&quot;autohotkeykr.sourceforge.net&quot; data-og-source-url=&quot;http://autohotkeykr.sourceforge.net/docs/commands/MouseClick.htm&quot; data-og-url=&quot;http://autohotkeykr.sourceforge.net/docs/commands/MouseClick.htm&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/commands/MouseClick.htm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://autohotkeykr.sourceforge.net/docs/commands/MouseClick.htm&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;MouseClick&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;autohotkeykr.sourceforge.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇다면, 좌표 (300, 300) 이 어디인지는 어떻게 알 수 있을까요?&lt;/p&gt;
&lt;p&gt;모를 땐 직접 실행해보면서 유추해볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키 실행 후, Alt + 1 단축키를 눌러보시죠.&lt;/p&gt;
&lt;p&gt;(300, 300) 으로 마우스 포인터가 이동 후 클릭되는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이후 (400, 300), (300, 400) 등으로 코드를 수정해가며 테스트해보면&lt;/p&gt;
&lt;p&gt;값이 커질수록 어느 방향으로 포인터가 이동되는지 쉽게 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;똑똑하신 분은 기준점 되는 (0, 0) 이 어딘지도 이미 테스트해보셨을 거라고 생각합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만, 이것은 매우 비효율적인 방법입니다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;SciTE4AutoHotkey &lt;/span&gt;에디터를 통해 좀 더 효율적으로 좌표를 찾는 방법을 알아보도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;에디터의 상단 툴바를 보면 Active Window Info 라는 아이콘이 있습니다.&lt;/p&gt;
&lt;p&gt;Window Spy 라고도 많이 불리고 있습니다.&lt;/p&gt;
&lt;p&gt;에디터에 Active Window Info 라고 되어 있으니 이 용어를 쓰도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;망설이지 말고 실행해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Active Window Info.png&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;24&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xgNAD/btqE1DLYega/Pydwa6eq60UNDrjwXBhGl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xgNAD/btqE1DLYega/Pydwa6eq60UNDrjwXBhGl1/img.png&quot; data-alt=&quot;SciTE4AutoHotkey&amp;amp;amp;nbsp;Active Window Info Tool&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xgNAD/btqE1DLYega/Pydwa6eq60UNDrjwXBhGl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxgNAD%2FbtqE1DLYega%2FPydwa6eq60UNDrjwXBhGl1%2Fimg.png&quot; data-filename=&quot;Active Window Info.png&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;24&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey&amp;nbsp;Active Window Info Tool&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;처음에는 다음과 같이 내용이 비어 있는 창이 뜰 것이며,&lt;/p&gt;
&lt;p&gt;메모장 등의 어떠한 창을 클릭하면 곧바로 정보가 나타납니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Active Window Info 2.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;726&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vIOKP/btqE0PzPVDr/JMsSZf0LGpf8qE9JaSGVoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vIOKP/btqE0PzPVDr/JMsSZf0LGpf8qE9JaSGVoK/img.png&quot; data-alt=&quot;Active Window Info&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vIOKP/btqE0PzPVDr/JMsSZf0LGpf8qE9JaSGVoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvIOKP%2FbtqE0PzPVDr%2FJMsSZf0LGpf8qE9JaSGVoK%2Fimg.png&quot; data-filename=&quot;Active Window Info 2.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;726&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Active Window Info&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Active Window Info 4.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;726&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBWYkq/btqE00A9Xt3/2rrHzzrSRxZa9bxv2Db10k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBWYkq/btqE00A9Xt3/2rrHzzrSRxZa9bxv2Db10k/img.png&quot; data-alt=&quot;Active Window Info&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBWYkq/btqE00A9Xt3/2rrHzzrSRxZa9bxv2Db10k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBWYkq%2FbtqE00A9Xt3%2F2rrHzzrSRxZa9bxv2Db10k%2Fimg.png&quot; data-filename=&quot;Active Window Info 4.png&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;726&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Active Window Info&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;그중에 우리가 이번 시간에 필요한 정보는 마우스 포지션이죠.&lt;/p&gt;
&lt;p&gt;그런데 뭔가 알 수 없는 말들로 복잡해 보입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Absolute, Relative, Client 세 가지가 있으며,&lt;/p&gt;
&lt;p&gt;각각에 대한 좌표가 보입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키에는 좌표계가 세 가지가 있으며,&lt;/p&gt;
&lt;p&gt;각 좌표계를 기준으로 한 현재 마우스 포인터에 대한&lt;/p&gt;
&lt;p&gt;위치 정보를 표기해주는 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우선은, 오토핫키에는 좌표계가 세 가지가 있다는 것만 알아두고&lt;/p&gt;
&lt;p&gt;자세한 내용은 나중에 다시 설명드리겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Relative 좌표계 오른쪽에 보면 괄호 안에 Default 라고 되어 있죠.&lt;/p&gt;
&lt;p&gt;좌표계의 기본값이 Relative 라는 뜻이며,&lt;/p&gt;
&lt;p&gt;이것은 현재 활성화된 창을 기준으로 하는 좌표계입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;항상 (0, 0) 은 각 좌표계의 좌상단을 뜻합니다.&lt;/p&gt;
&lt;p&gt;따라서, 현재 활성화된 창을 기준으로 가장 왼쪽 위의 모서리가&lt;/p&gt;
&lt;p&gt;(0, 0) 인 셈이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 기준에서 오른쪽으로 갈수록 x 좌표는 커지며,&lt;/p&gt;
&lt;p&gt;기준에서 아래쪽으로 갈 수록 y 좌표가 커집니다.&lt;/p&gt;
&lt;p&gt;물론, 마이너스(-) 좌표도 존재합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;coord.png&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;875&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2yBC6/btqE3dFBpO9/cxWxrcKotqjgkcvBwKL75k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2yBC6/btqE3dFBpO9/cxWxrcKotqjgkcvBwKL75k/img.png&quot; data-alt=&quot;좌표값&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2yBC6/btqE3dFBpO9/cxWxrcKotqjgkcvBwKL75k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2yBC6%2FbtqE3dFBpO9%2FcxWxrcKotqjgkcvBwKL75k%2Fimg.png&quot; data-filename=&quot;coord.png&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;875&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;좌표값&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 좌표값을 얻는 간편한 방법을 아셨죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다양한 형태로 바꾸어서 실습해보시기 바랍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1592752984642&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp


!1::
MouseClick, Left, 300, 300, 1
Sleep, 2000
MouseClick, Right, 300, 300, 1
Sleep, 2000
MouseClick, Left, 300, 300, 2
Sleep, 2000
MouseClick, Left, 300, 300, 1, 0
Sleep, 2000
MouseClick, Left, 300, 300, 1, 100
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;마우스 제어 실습 1.gif&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;726&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6K4GD/btqE1qM8nPg/XFvocAeQCtoHi364uEe3jK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6K4GD/btqE1qM8nPg/XFvocAeQCtoHi364uEe3jK/img.gif&quot; data-alt=&quot;마우스 제어 실습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6K4GD/btqE1qM8nPg/XFvocAeQCtoHi364uEe3jK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/b6K4GD/btqE1qM8nPg/XFvocAeQCtoHi364uEe3jK/img.gif&quot; data-filename=&quot;마우스 제어 실습 1.gif&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;726&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마우스 제어 실습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/12</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%A7%88%EC%9A%B0%EC%8A%A4-%EC%A0%9C%EC%96%B41#entry12comment</comments>
      <pubDate>Mon, 22 Jun 2020 00:27:15 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 키보드 제어(3)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%82%A4%EB%B3%B4%EB%93%9C-%EC%A0%9C%EC%96%B43</link>
      <description>&lt;p&gt;키를 조합해서 입력하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예를 들어, Ctrl + c 로 복사하고, Ctrl + v 로 붙여 넣는 가장 흔한 키 조합이 있습니다.&lt;/p&gt;
&lt;p&gt;핫키로 지정하는 방법을 배웠으니 이제 조금은 익숙해지셨을 거라 생각합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키가 작동하는 과정을 보기 쉽게 하기 위해 복사 대신 잘라내기 단축키인 Ctrl + x 로 실습해보겠습니다.&lt;/p&gt;
&lt;p&gt;다음과 같이 Ctrl + 5 핫키를 정의해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sleep 명령어는 잠깐 쉬라는 의미입니다. millisecond 단위기 때문에 1000을 지정하면 1초를 쉬게 됩니다.&lt;/p&gt;
&lt;p&gt;그래서 다음 코드를 풀어 설명하면 이렇습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. Hello World! 를 입력&lt;/p&gt;
&lt;p&gt;2. Ctrl + a 를 눌러 모든 텍스트 선택&lt;/p&gt;
&lt;p&gt;3. 1초 대기&lt;/p&gt;
&lt;p&gt;4. Ctrl + x 를 눌러 잘라내기&lt;/p&gt;
&lt;p&gt;5. 1초 대기&lt;/p&gt;
&lt;p&gt;6. Ctrl + v 를 눌러 붙여 넣기&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592530505428&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!5::
Send, Hello World{!}
Send, ^a
Sleep, 1000
Send, ^x
Sleep, 1000
Send, ^v
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드를 작성하셨으면, 메모장을 실행합니다.&lt;/p&gt;
&lt;p&gt;그러고 나서 Alt + 5 키를 눌러 오토핫키를 실행해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;잘 되나요? 축하합니다. 이번에도 성공하셨군요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 앞서 작성한 코드에서&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Sleep 명령어가 있는 줄을 모두 주석처리해보세요. 이렇게요.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1592531128276&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!5::
Send, Hello World{!}
Send, ^a
;~ Sleep, 1000
Send, ^x
;~ Sleep, 1000
Send, ^v
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주석처리하는 방법에는 두 가지가 있다고 말씀드렸고,&lt;/p&gt;
&lt;p&gt;한 줄 전체를 주석 처리하기 위해 맨 앞에 세미콜론(;) 을 붙였습니다.&lt;/p&gt;
&lt;p&gt;한 줄을 주석 처리하거나 해제하는 단축키가 있는데, 그것은, Ctrl + q 입니다.&lt;/p&gt;
&lt;p&gt;이미 주석처리돼있는 상태에서 한번 더 누르면 주석이 해제됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드를 작성하셨으면, 오토핫키를 다시 실행한 후,&lt;/p&gt;
&lt;p&gt;메모장을 새로 열고 Alt + 5 를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예상하기로는 Alt + 5 를 누르면&lt;/p&gt;
&lt;p&gt;아까와 마찬가지 결과가 나오되,&lt;/p&gt;
&lt;p&gt;Sleep 명령어를 수행하지 않으므로&lt;/p&gt;
&lt;p&gt;1초 대기를 하지 않을 것으로 예상됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;어떤가요? 예상대로 진행되나요?&lt;/p&gt;
&lt;p&gt;글쎄요, 피씨 환경에 따라 되는 분들도 있을지 모르겠네요.&lt;/p&gt;
&lt;p&gt;아마 잘 안 되는 경우가 더 많을 것 같습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇듯, 키를 조합하여 입력하는 경우에는 주의하셔야 합니다.&lt;/p&gt;
&lt;p&gt;적절한 Sleep 을 주셔야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조합키가 여러 개인 경우도 살펴볼게요.&lt;/p&gt;
&lt;p&gt;예를 들어, 메모장에서 Alt 키를 누른 상태에서 f 와 a 를 누르면&lt;/p&gt;
&lt;p&gt;다른 이름으로 저장하기 창이 뜹니다.&lt;/p&gt;
&lt;p&gt;이것을 구현하기에 앞서 말로 그 단계 단계를 설명드릴게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. Alt 키를 누르고 있는다.&lt;/p&gt;
&lt;p&gt;2. f 키를 눌렀다 뗀다.&lt;/p&gt;
&lt;p&gt;3. a 키를 눌렀다 뗀다.&lt;/p&gt;
&lt;p&gt;4. Alt 키를 뗀다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드로는 이렇습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1592531860876&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!6::
Send, {Alt Down}fa{Alt up}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키 재실행 후, 메모장을 열고 Alt + 6 을 눌러 실행해보세요.&lt;/p&gt;
&lt;p&gt;다른 이름으로 저장하기 창이 뜨나요?&lt;/p&gt;
&lt;p&gt;내친김에, 파일 이름까지 지정해보시죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592531938109&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!6::
Send, {Alt Down}fa{Alt up}
Sleep, 2000
Send, Test.txt
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;오토핫키 키 조합 입력.gif&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;719&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFDyGl/btqEZbVJTbx/nxRzmrNHFfinSHK6bmC180/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFDyGl/btqEZbVJTbx/nxRzmrNHFfinSHK6bmC180/img.gif&quot; data-alt=&quot;오토핫키 조합키 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFDyGl/btqEZbVJTbx/nxRzmrNHFfinSHK6bmC180/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bFDyGl/btqEZbVJTbx/nxRzmrNHFfinSHK6bmC180/img.gif&quot; data-filename=&quot;오토핫키 키 조합 입력.gif&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;719&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오토핫키 조합키 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 정도로 키보드 제어를 마치겠습니다.&lt;/p&gt;
&lt;p&gt;전체 코드를 다시 적어드릴 테니 복습하실 때 참고하세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1592532234084&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp
return


!1::
Send, Hello World{!}
Send, {Enter}
Send, Hell World{!}
return


!2::
Send, {a 100}
return


!3::
SendInput, {a 100}
return


!4::
Send, {Enter}
SendRaw, {Enter}
return


!5::
Send, Hello World{!}
Send, ^a
;~ Sleep, 1000
Send, ^x
;~ Sleep, 1000
Send, ^v
return


!6::
Send, {Alt Down}fa{Alt up}
Sleep, 2000
Send, Test.txt
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;키보드제어.png&quot; data-origin-width=&quot;699&quot; data-origin-height=&quot;546&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfbN7F/btqEWBVTEGf/ZXBUTlp1Xt3cFbgAezdTD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfbN7F/btqEWBVTEGf/ZXBUTlp1Xt3cFbgAezdTD0/img.png&quot; data-alt=&quot;키보드 제어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfbN7F/btqEWBVTEGf/ZXBUTlp1Xt3cFbgAezdTD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfbN7F%2FbtqEWBVTEGf%2FZXBUTlp1Xt3cFbgAezdTD0%2Fimg.png&quot; data-filename=&quot;키보드제어.png&quot; data-origin-width=&quot;699&quot; data-origin-height=&quot;546&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;키보드 제어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/11</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%82%A4%EB%B3%B4%EB%93%9C-%EC%A0%9C%EC%96%B43#entry11comment</comments>
      <pubDate>Fri, 19 Jun 2020 11:05:05 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 키보드 제어(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%82%A4%EB%B3%B4%EB%93%9C-%EC%A0%9C%EC%96%B42</link>
      <description>&lt;p&gt;키보드를 반복해서 입력하는 방법에 대해 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;예를 들어, a 라는 키를 10번 입력할 일이 있다고 합시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1591791200964&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Send, a
Send, a
Send, a
...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이런 식으로 10 번 입력해야 할까요?&lt;/p&gt;
&lt;p&gt;아니면 이렇게 입력하면 될까요?&lt;/p&gt;
&lt;pre id=&quot;code_1591791253302&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Send, aaaaaaaaaa&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;물론 잘 됩니다. 하지만 10번이 아니라 100번이라면요? 혹시 1000번이라면요?&lt;/p&gt;
&lt;p&gt;오토핫키 Send 명령어로 키를 반복할 수 있게 하는 방법이 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Alt + 2 핫키에 이렇게 한번 정의해보세요.&lt;/p&gt;
&lt;pre id=&quot;code_1591791355665&quot; class=&quot;html xml&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!2::
Send, {a 100}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;참 간단합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Send 와 관련된 명령어가 몇 가지 있습니다.&lt;/p&gt;
&lt;p&gt;일단은 Alt + 3 핫키를 먼저 정의해놓고 진행하도록 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1591792394057&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!3::

return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SciTE4AHK 에디터에서 Send 를 타이핑하시면 Send 로 시작하는 명령어의 목록이 나타납니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Send, SendEvent, SendInput, SendPlay, SendRaw 등이 나오네요.&lt;/p&gt;
&lt;p&gt;Send 로 시작하는 것으로 보아 이것들은 모두 키보드 입력과 관련된 내용인 것으로 추측해볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Ce4XV19FX6.png&quot; data-origin-width=&quot;128&quot; data-origin-height=&quot;173&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYfUd7/btqELxSODFz/p07L1sjIB3opM2NskA7Tb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYfUd7/btqELxSODFz/p07L1sjIB3opM2NskA7Tb1/img.png&quot; data-alt=&quot;명령어 자동완성 기능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYfUd7/btqELxSODFz/p07L1sjIB3opM2NskA7Tb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYfUd7%2FbtqELxSODFz%2Fp07L1sjIB3opM2NskA7Tb1%2Fimg.png&quot; data-filename=&quot;Ce4XV19FX6.png&quot; data-origin-width=&quot;128&quot; data-origin-height=&quot;173&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;명령어 자동완성 기능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Send 까지만 친 상태에서 목록이 나타나면, 아래쪽 방향키를 눌러 SendInput 으로 이동한 후, 탭 또는 엔터 키를 눌러보세요. SendInput 을 끝까지 입력하지 않더라도 명령어가 자동 완성되는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이것은 SciTE4AHK 에디터를 설치했기 때문에 가능한 일입니다.&lt;/p&gt;
&lt;p&gt;오토핫키만 설치했다면 모든 명령어를 외우거나 찾아봐야 하는데,&lt;/p&gt;
&lt;p&gt;이 에디터 덕분에 명령어 몇 글자만 치더라도&lt;/p&gt;
&lt;p&gt;어떤 명령어들이 있는지 쉽게 알 수 있을 뿐만 아니라&lt;/p&gt;
&lt;p&gt;자동완성 기능을 이용해 명령어를 빠르게 입력하는 것도 가능합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SendInput 에서 탭 또는 엔터 키를 눌러 명령어를 완성하셨으면, 이번에는 콤마(,)를 입력해보세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nX8bd/btqEJBa2akx/SWzTmRyn88Aqgu5Nt6FxyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nX8bd/btqEJBa2akx/SWzTmRyn88Aqgu5Nt6FxyK/img.png&quot; data-alt=&quot;명령어 간이 도움말&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nX8bd/btqEJBa2akx/SWzTmRyn88Aqgu5Nt6FxyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnX8bd%2FbtqEJBa2akx%2FSWzTmRyn88Aqgu5Nt6FxyK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;명령어 간이 도움말&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;명령어에 대한 간이 도움말이 나타납니다. 이 또한 SciTE4AHK 에디터를 쓰는 이유 중의 하나죠. 좌우 방향키를 누르더라도 간이 도움말은 사라지지 않습니다. 다른 키를 누르면 도움말이 사라지니 이 점 참고하시기 바랍니다. 행여나 도움말이 사라졌다면 명령어 다음에 쉼표를 지웠다가 다시 쉼표를 누르시면 나타납니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 아까와 마찬가지로 a 를 100번 입력하는 명령어를 SendInput 으로 날려 보겠습니다.&lt;/p&gt;
&lt;p&gt;다음과 같이 스크립트를 작성하셨으면,&lt;/p&gt;
&lt;p&gt;아까 Send 명령어를 날렸을 때와 결과를 비교하기 위해 메모장을 열고&lt;/p&gt;
&lt;p&gt;Alt + 2 와 Alt + 3 을 각각 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1591796593607&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp
return


!2::
Send, {a 100}
return


!3::
SendInput, {a 100}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;차이가 눈에 보이시나요? 네, 맞습니다. Send 보다는 SendInput 이 훨씬 더 빠른 것을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SendRaw 명령어도 익힐 필요가 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예를 들어, {Enter} 라는 글자를 그대로 타이핑하고 싶습니다.&lt;/p&gt;
&lt;p&gt;그런데 Send, {Enter} 해버리면 글자가 입력되는 것이 아니라 한 줄이 내려가버리겠죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이럴 때 쓰는 명령어가 SendRaw 입니다.&lt;/p&gt;
&lt;p&gt;Raw 는 '날것의' 라는 뜻이므로, 있는 그대로의 문자를 입력할 때 SendRaw 를 사용합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1591797016072&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!4::
Send, {Enter}
SendRaw, {Enter}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이것 역시 메모장을 띄우고 실습해보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/10</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%82%A4%EB%B3%B4%EB%93%9C-%EC%A0%9C%EC%96%B42#entry10comment</comments>
      <pubDate>Wed, 10 Jun 2020 22:52:18 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 키보드 제어(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%82%A4%EB%B3%B4%EB%93%9C-%EC%A0%9C%EC%96%B4</link>
      <description>&lt;p&gt;드디어 매크로 같은 매크로(?)를 처음으로 코딩해볼 시간이 왔습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;단축키를 이용하여 키보드를 제어하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;전 시간에는 Alt + 1 키를 누르면 Hello World! 라는 메시지 박스를 띄웠었죠.&lt;/p&gt;
&lt;p&gt;이번엔 Alt + 1 키를 누르면 Hellow World! 가 메모장에 입력되도록 해보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음의 코드를 SciTE4AHK 에디터에 입력하세요.&lt;/p&gt;
&lt;pre id=&quot;code_1591617797357&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!1::
Send, Hello World!
return
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드를 다 입력하셨으면, 에디터의 재생 버튼을 눌러 실행합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 메모장을 하나 띄우세요.&lt;/p&gt;
&lt;p&gt;Alt + 1 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hello World! 가 잘 입력되나요?&lt;/p&gt;
&lt;p&gt;오~ 신기하죠? 매크로 참 쉽습니다. (아직까지는... 쿨럭)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번엔 메모장이 아닌,&lt;/p&gt;
&lt;p&gt;인터넷 브라우저 주소창을 클릭하고 Alt + 1 을 눌러봅니다.&lt;/p&gt;
&lt;p&gt;주소창에 Hello World! 가 입력되나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇듯 현재 커서가 활성화되어 있는 곳에 키보드가 입력되는 것을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아, 그런데 Hello World! 라고 정확히 입력이 잘 되나요?&lt;/p&gt;
&lt;p&gt;네? 잘 된다고요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그럴 리가 없습니다. 다시 확인해보세요.&lt;/p&gt;
&lt;p&gt;느낌표가 입력이 안 되었을 겁니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음의 코드처럼 &lt;span style=&quot;color: #333333;&quot;&gt;느낌표를 중괄호로 묶어&lt;/span&gt;보세요. 중괄호는 특수 기호를 입력할 때 쓰입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1591618332076&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!1::
Send, Hello World{!}
return
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;재생 버튼을 눌러 다시 실행합니다.&lt;/p&gt;
&lt;p&gt;혹시 이런 메시지가 뜨나요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/craenl/btqEIVr7Cyw/HJ9K9MKpde3qdqnXReAN40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/craenl/btqEIVr7Cyw/HJ9K9MKpde3qdqnXReAN40/img.png&quot; data-alt=&quot;#SingleInstance&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/craenl/btqEIVr7Cyw/HJ9K9MKpde3qdqnXReAN40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcraenl%2FbtqEIVr7Cyw%2FHJ9K9MKpde3qdqnXReAN40%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;#SingleInstance&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이것은 기존에 이미 실행 중인 스크립트가 있는데, 새로 대체할 것인지의 여부를 묻는 창입니다.&lt;/p&gt;
&lt;p&gt;Yes 를 눌러 진행하면 됩니다만, 매번 이런 메시지를 보는 것이 여간 성가시지 않죠.&lt;/p&gt;
&lt;p&gt;친절하게도 메시지 내용을 보면 #SingleInstance 명령어를 확인하라고 알려주네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래 문서를 통해 잠시 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/commands/_SingleInstance.htm&quot;&gt;http://autohotkeykr.sourceforge.net/docs/commands/_SingleInstance.htm&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1591618705586&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;#SingleInstance&quot; data-og-description=&quot;&quot; data-og-host=&quot;autohotkeykr.sourceforge.net&quot; data-og-source-url=&quot;http://autohotkeykr.sourceforge.net/docs/commands/_SingleInstance.htm&quot; data-og-url=&quot;http://autohotkeykr.sourceforge.net/docs/commands/_SingleInstance.htm&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/commands/_SingleInstance.htm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://autohotkeykr.sourceforge.net/docs/commands/_SingleInstance.htm&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;#SingleInstance&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;autohotkeykr.sourceforge.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;자, 이제 대충 공부하셨으면, 코드를 한번 더 수정해볼게요. 행여나 이해가 안 되시더라도 괜찮습니다. 우리는 무조건 다음과 같이 #SingleInstance, Force 만 쓸 거니까요. 외우거나 어디 복사해두세요.&lt;/p&gt;
&lt;pre id=&quot;code_1591618686474&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force

!1::
Send, Hello World{!}
return
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기존에 떠 있던 오토핫키를 다 닫고 실행해보세요.&lt;/p&gt;
&lt;p&gt;오토핫키 종료하는 것도 여간 귀찮은 게 아니죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F4 단축키를 통해 오토핫키를 종료하는 코드를 넣어 둡시다.&lt;/p&gt;
&lt;pre id=&quot;code_1591619037541&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp
return


!1::
Send, Hello World{!}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;편의성을 위해 #SingleInstance, Force 와 F4 핫키 지정한 부분은 앞으로 항상 맨 위에 입력하고 진행하겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F4 블록에 있는 ExitApp 명령어는 오토핫키를 종료하는 명령어입니다.&lt;/p&gt;
&lt;p&gt;따라서 그 아래에 있는 return 명령어는 써도 되고 안 써도 됩니다.&lt;/p&gt;
&lt;p&gt;어차피 프로그램이 종료되면 그만이기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;자, 이제 코드를 수정하고 기존의 오토핫키를 모두 종료하셨나요?&lt;/p&gt;
&lt;p&gt;그렇다면, 재생 버튼을 눌러보세요. 또 눌러 보세요.&lt;/p&gt;
&lt;p&gt;아까와 같은 메시지가 안 뜨고 바로 오토핫키가 재시작되는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메모장을 띄워 Alt + 1 을 눌러보세요.&lt;/p&gt;
&lt;p&gt;Hello World! 가 정확히 입력되나요?&lt;/p&gt;
&lt;p&gt;고생하셨습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 메모장의 Hello World! 아랫줄에 Hell World! 라고 키보드를 입력해볼까 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z2f3e/btqEHxFKhEe/vp18Dx8BYmjKFBahrpg6Z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z2f3e/btqEHxFKhEe/vp18Dx8BYmjKFBahrpg6Z0/img.png&quot; data-alt=&quot;Hello World! Hell World!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z2f3e/btqEHxFKhEe/vp18Dx8BYmjKFBahrpg6Z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz2f3e%2FbtqEHxFKhEe%2Fvp18Dx8BYmjKFBahrpg6Z0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Hello World! Hell World!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키 에디터를 여시고, Alt + 1 핫키에 Hell World! 를 추가해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1591619702139&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp
return


!1::
Send, Hello World{!}
Send, Hell World{!}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F5 키 또는 재생 버튼을 눌러 스크립트를 재시작해주세요.&lt;/p&gt;
&lt;p&gt;새로운 메모장을 띄워 주세요.&lt;/p&gt;
&lt;p&gt;Alt + 1 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;원하는 대로 타이핑되었나요? 맘에 안 드네요.&lt;/p&gt;
&lt;p&gt;저는 한 줄 아래로 내려서 입력하고 싶었거든요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hello World! 다음에 한 줄 내리고 Hell World! 하려면 어떻게 하면 될까요?&lt;/p&gt;
&lt;p&gt;중간에 엔터키를 한번 눌러주면 되겠죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;엔터키는 특수키이기 때문에&lt;/p&gt;
&lt;p&gt;Send, Enter 가 아니라 중괄호를 씌워&lt;/p&gt;
&lt;p&gt;Send, {Enter} 로 스크립트를 작성하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1591620203056&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#SingleInstance, Force


F4::
ExitApp
return


!1::
Send, Hello World{!}
Send, {Enter}
Send, Hell World{!}
return&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다시 실행하고, 메모장에서 다시 Alt + 1 을 눌러보세요.&lt;/p&gt;
&lt;p&gt;어떤가요? 원하는 형태로 출력이 잘 되나요?&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;축하드립니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enter 키 외에도 다른 특수키를 입력하고 싶으실 때는,&lt;/p&gt;
&lt;p&gt;{Space}, {ESC} 등과 같이 사용하시면 됩니다.&lt;/p&gt;
&lt;p&gt;이것 외의 키를 입력하고 싶으시면 다음의 링크를 참고하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/KeyList.htm&quot;&gt;http://autohotkeykr.sourceforge.net/docs/KeyList.htm&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1591791006848&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;List of Keys and Mouse/Joystick Buttons for Hotkeys and Macros&quot; data-og-description=&quot;VKnn nn에 키의 십육진 가상 키 코드를 지정합니다. 자주 사용되지 않는 이 방법은 어떤 유형의 핫키가 키보드 갈고리를 요구하는 것을 방해할 수도 있습니다. 예를 들어, 다음 핫키들은 키보드 갈&quot; data-og-host=&quot;autohotkeykr.sourceforge.net&quot; data-og-source-url=&quot;http://autohotkeykr.sourceforge.net/docs/KeyList.htm&quot; data-og-url=&quot;http://autohotkeykr.sourceforge.net/docs/KeyList.htm&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/KeyList.htm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://autohotkeykr.sourceforge.net/docs/KeyList.htm&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;List of Keys and Mouse/Joystick Buttons for Hotkeys and Macros&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;VKnn nn에 키의 십육진 가상 키 코드를 지정합니다. 자주 사용되지 않는 이 방법은 어떤 유형의 핫키가 키보드 갈고리를 요구하는 것을 방해할 수도 있습니다. 예를 들어, 다음 핫키들은 키보드 갈&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;autohotkeykr.sourceforge.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/9</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%82%A4%EB%B3%B4%EB%93%9C-%EC%A0%9C%EC%96%B4#entry9comment</comments>
      <pubDate>Mon, 8 Jun 2020 22:18:24 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 명령문과 주석문</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%AA%85%EB%A0%B9%EB%AC%B8%EA%B3%BC-%EC%A3%BC%EC%84%9D%EB%AC%B8</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;명령문과&amp;nbsp;주석문&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;오토핫키 스크립트는 문법을 크게 두 가지로 분류해볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;명령문과 주석문이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;명령문은 컴퓨터가 실제로 어떤 행위를 수행하도록 명령하는 문법이며,&lt;/p&gt;
&lt;p&gt;주석문은 개발자가 코드를 작성하더라도&lt;/p&gt;
&lt;p&gt;실제로는 컴퓨터가 인식하지 않고 무시하도록 하는 문법입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 명령문&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;명령문은 다시 명령어와 매개변수로 구분됩니다.&lt;/p&gt;
&lt;p&gt;앞에서 배웠던 MsgBox 명령문을 살펴보겠습니다.&lt;/p&gt;
&lt;p&gt;MsgBox, Hello World!&lt;/p&gt;
&lt;pre id=&quot;code_1591107878748&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, Hello World!&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;여기서 콤마(,) 를 기준으로 왼쪽에 있는 구(?) 를 명령어라고 하며,&lt;/p&gt;
&lt;p&gt;오른쪽에 있는 구를 전달 인자 또는 줄여서 인자라고 합니다. 영어로는 Argument 라고 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;명령어는 말 그대로 어떤 명령을 할 것인지를 표현하는 것이며,&lt;/p&gt;
&lt;p&gt;전달 인자는 명령어의 부수적인 옵션에 해당한다고 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;따라서 1개의 명령어에는 다양한 전달 인자가 붙을 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1591108831546&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, Hello World!
MsgBox, Hell World!
MsgBox, Welcome!&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;또한, 명령어에 따라 여러 개의 전달 인자를 동시에 필요로 하는 경우도 있습니다.&lt;/p&gt;
&lt;p&gt;아직 MsgBox 명령어만 배웠기 때문에&lt;/p&gt;
&lt;p&gt;추상적으로 설명을 드리겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하나의 명령어에 여러 개의 전달인자를 쓰려면 다음과 같은 형태로 코드를 작성하시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1591108799162&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Command, Arg1, Arg2, Arg3, ...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;가장 왼쪽에는 항상 명령어가 들어갑니다.&lt;/p&gt;
&lt;p&gt;그리고 콤마(,) 로 구분하여 전달 인자를 여러 개 쓸 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;명령어에 따라서는 생략이 가능한 전달 인자가 있을 수도 있습니다.&lt;/p&gt;
&lt;p&gt;바꾸어 말하면 반드시 필요한 전달 인자도 있다는 뜻이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;반드시 필요한 전달 인자와 생략 가능한 전달 인자는&lt;/p&gt;
&lt;p&gt;보통 대괄호([]) 로 구분하여 표현합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;대괄호가 없는 것은 필수 인자를 표현하며,&lt;/p&gt;
&lt;p&gt;대괄호가 있는 것은 생략 가능한 인자를 표현합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음의 예시를 참조하시기 바랍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1591109731098&quot; class=&quot;html xml&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Command, Arg1, Arg2
Command, Arg1, Arg2 [, Arg3, Arg4]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조금만 더 살펴보시죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MsgBox 처럼 Arg1 자리에 자유롭게 작성이 가능한 명령어가 있는 반면에,&lt;/p&gt;
&lt;p&gt;Arg1 자리에 들어갈 수 있는 값이 정해져 있는 명령어도 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A, B, C 중에 하나만 입력할 수 있는 인자는 수직선(Vertical bar) 으로 나타내기로 합니다.&lt;/p&gt;
&lt;p&gt;다음 예시를 한번 볼까요?&lt;/p&gt;
&lt;pre id=&quot;code_1591110054436&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Command, [A | B | C]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A, B, C 가 수직선으로 구분되어 있으니,&lt;/p&gt;
&lt;p&gt;앞의 명령어는 그 셋 중에 하나의 인자만 입력할 수 있다는 뜻입니다.&lt;/p&gt;
&lt;p&gt;앗! 그런데 대괄호로 묶여 있네요!&lt;/p&gt;
&lt;p&gt;정해진 값이 있는 인자는 대부분이 이러한 형태로 이루어져 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그런데 대괄호는 생략이 가능하다고 말씀드렸습니다.&lt;/p&gt;
&lt;p&gt;그 이유는, 기본 인자 값이 존재하기 때문입니다.&lt;/p&gt;
&lt;p&gt;보통 기본값이라고 표현을 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A, B, C 중에 하나는 기본값입니다. 물론 명령어마다 기본값은 다릅니다.&lt;/p&gt;
&lt;p&gt;그래서 생략은 가능하더라도 헷갈리지 않게 명시적으로 작성하는 것을 추천드립니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이해를 돕기 위해 예를 들어 보겠습니다.&lt;/p&gt;
&lt;p&gt;Command1 명령어는 A, B, C 중에 A 라는 기본값을 가지고 있고,&lt;/p&gt;
&lt;p&gt;Command2 명령어는 AA, BB, CC 중에 BB 라는 기본값을 가지고 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이런 경우는 다음과 같음을 이해하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1591110759493&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Command1&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1591110762420&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Command1, A&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;&lt;span style=&quot;color: #333333;&quot;&gt;Command1 과 Command1, A 의 결과는 동일&lt;/span&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1591110833710&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Command2&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1591110835283&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Command2, BB&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;Command2 와 Command2, BB 의 결과는 동일&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 주석문&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주석문은 코드를 작성하더라도&lt;/p&gt;
&lt;p&gt;실제로는 컴퓨터가 인식하지 않고 무시한다고 말씀드렸습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이러한 특성을 이용하여, 주로 메모를 위한 용도로 쓰이곤 합니다.&lt;/p&gt;
&lt;p&gt;사람이 컴퓨터에게 이해를 시키기 위한 코드가 아니라&lt;/p&gt;
&lt;p&gt;사람이 사람에게 이해를 시키기 위한 코드라고 볼 수 있죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;주석문도 두 가지가 있습니다.&lt;/p&gt;
&lt;p&gt;한 줄만 주석처리하는 문법과 여러 줄을 주석처리 하는 문법입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;한 줄 주석은 세미콜론(;) 을 사용합니다.&lt;/p&gt;
&lt;p&gt;한 줄 전체를 주석으로 처리할 경우에는,&lt;/p&gt;
&lt;p&gt;Ctrl + q 토글 단축키를 사용하면 쉽게 한 줄 주석을 지정하거나 해제할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1591111256578&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, Hello World!	; 세미콜론을 기준으로 오른쪽에 있는 내용은 모두 주석처리 됩니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여러 줄 주석은 여는 기호와 닫는 기호가 존재합니다.&lt;/p&gt;
&lt;p&gt;/* 로 열고 */ 로 닫습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1591111320469&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MsgBox, Hello World!

/*
MsgBox, Hell World!

주석문 안에 있는 모든 내용은 컴퓨터가 무시합니다.

아무리 MsgBox 에 Hell World! 를 입력하더라도
주석문 안에 있기 때문에
스크립트를 실행하면

Hello World! 만 나타나며,
Hell World! 는 출력되지 않습니다.

아직은 살만 한 가봐요.
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/8</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%AA%85%EB%A0%B9%EB%AC%B8%EA%B3%BC-%EC%A3%BC%EC%84%9D%EB%AC%B8#entry8comment</comments>
      <pubDate>Wed, 3 Jun 2020 00:29:31 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 핫키 지정 및 사용법(2)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%95%AB%ED%82%A4-%EC%A7%80%EC%A0%95-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%952</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;핫키&amp;nbsp;지정&amp;nbsp;및&amp;nbsp;사용법(2)&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;핫키를 조합하는 방법에 대해 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일단, 우리가 자주 쓰는 조합키에는 무엇이 있나 생각해봅시다.&lt;/p&gt;
&lt;p&gt;Control, Alt, Shift 가 많이 쓰이며, 간혹 Windows 키도 쓰이네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키에서는 이 조합키를 어떻게 지정하는지 순서대로 한번 배워보시죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ctrl: ^&lt;/p&gt;
&lt;p&gt;Alt: !&lt;/p&gt;
&lt;p&gt;Shift: +&lt;/p&gt;
&lt;p&gt;Win: #&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ctrl 은 ^ 기호로, Alt 는 ! 기호로, Shift 는 + 기호로, 그리고 Win 은 # 기호로 오토핫키에서는 표현합니다.&lt;/p&gt;
&lt;p&gt;무슨 말씀인지 모르시겠다고요? 다음 예제를 보시면 이해가 되실 겁니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ctrl + 1 키를 핫키로 지정하고 싶을 때에는 다음과 같이 코드를 작성합니다. 아직 실행은 하지 마시고, 작성만 해두세요.&lt;/p&gt;
&lt;pre class=&quot;show-language remove-initial-line-feed copy-to-clipboard-button angelscript&quot;&gt;&lt;code&gt;^1::
MsgBox, Hello Ctrl + 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Alt + a 키를 핫키로 지정하고 싶을 때에는 다음과 같이 코드를 작성합니다. &lt;span style=&quot;color: #333333;&quot;&gt;아직 실행은 하지 마시고, 작성만 해두세요.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;show-language remove-initial-line-feed copy-to-clipboard-button autohotkey&quot;&gt;&lt;code&gt;!a::
MsgBox, Hello Alt + a&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Shift + Enter 키를 핫키로 지정하려면 다음과 같이 코드를 작성합니다. &lt;span style=&quot;color: #333333;&quot;&gt;아직 실행은 하지 마시고, 작성만 해두세요.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;show-language remove-initial-line-feed copy-to-clipboard-button autohotkey&quot;&gt;&lt;code&gt;+Enter::
MsgBox, Hello Shift + Enter&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Win + Space 키를 핫키로 지정하려면 다음과 같이 코드를 작성합니다. &lt;span style=&quot;color: #333333;&quot;&gt;아직 실행은 하지 마시고, 작성만 해두세요.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;show-language remove-initial-line-feed copy-to-clipboard-button vbscript&quot;&gt;&lt;code&gt;#Space::
MsgBox, Hello Win + Space&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇다면, 이번에는 여러 개의 키를 조합해볼까요?&lt;/p&gt;
&lt;p&gt;Ctrl + Alt + 1 키를 핫키로 지정하기 위해 다음과 같이 코드를 작성해보세요. 그리고 이번에도 &lt;span style=&quot;color: #333333;&quot;&gt;아직 실행은 하지 마시고, 작성만 해두세요.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;show-language remove-initial-line-feed copy-to-clipboard-button angelscript&quot;&gt;&lt;code&gt;^!1::
MsgBox, Hello Ctrl + Alt + 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조합키 기호가 익숙하지 않으실 겁니다. 하지만, 몇 번 하다 보면 금방 외워집니다. 그리고 굳이 외우지 않더라도 필요할 때마다 찾아보면 되니 걱정하지 않으셔도 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;정리가 잘 되어 있는 사이트 하나를 알려 드릴게요. 즐겨찾기 해두시면 편리합니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/Hotkeys.htm&quot;&gt;http://autohotkeykr.sourceforge.net/docs/Hotkeys.htm&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1590674789499&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Hotkeys (Mouse, Joystick and Keyboard Shortcuts)&quot; data-og-description=&quot;~ 핫키가 촉발되면, 그 키의 고유 기능은 불능이 됩니다 (시스템에 보이지 않습니다). 아래의 두 예제에서 , 사용자가 마우스 버튼을 클릭하면 활성 창으로 전송됩니다: ~RButton::MsgBox 오른쪽 마우�&quot; data-og-host=&quot;autohotkeykr.sourceforge.net&quot; data-og-source-url=&quot;http://autohotkeykr.sourceforge.net/docs/Hotkeys.htm&quot; data-og-url=&quot;http://autohotkeykr.sourceforge.net/docs/Hotkeys.htm&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://autohotkeykr.sourceforge.net/docs/Hotkeys.htm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://autohotkeykr.sourceforge.net/docs/Hotkeys.htm&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Hotkeys (Mouse, Joystick and Keyboard Shortcuts)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;~ 핫키가 촉발되면, 그 키의 고유 기능은 불능이 됩니다 (시스템에 보이지 않습니다). 아래의 두 예제에서 , 사용자가 마우스 버튼을 클릭하면 활성 창으로 전송됩니다: ~RButton::MsgBox 오른쪽 마우�&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;autohotkeykr.sourceforge.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;자, 이제 드디어 실행을 해볼 시간입니다.&lt;/p&gt;
&lt;p&gt;실행은 작성했던 것 핫키의 역순으로 해볼게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키 스크립트(코드)를 먼저 저장하세요.&lt;/p&gt;
&lt;p&gt;사실 실행하면 자동으로 먼저 저장이 되긴 합니다.&lt;/p&gt;
&lt;p&gt;그렇지만 항상 저장하는 습관을 기르는 게 좋아 보여요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;저장하셨으면, F5 키를 눌러 오토핫키를 실행합니다.&lt;/p&gt;
&lt;p&gt;아직까지는 아무런 반응이 없을 거예요. 핫키를 누르지 않았으니까요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;트레이 아이콘에 오토핫키가 떠 있는 것을 확인하셨다면,&lt;/p&gt;
&lt;p&gt;Ctrl + Alt + 1 핫키를 눌러보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;^!1 이라는 기호로 지정이 되어 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4AzMa/btqEtESVWGu/qK9AzKWikfOptmVunxPFv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4AzMa/btqEtESVWGu/qK9AzKWikfOptmVunxPFv0/img.png&quot; data-alt=&quot;핫키 호출에 의한 메시지 박스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4AzMa/btqEtESVWGu/qK9AzKWikfOptmVunxPFv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4AzMa%2FbtqEtESVWGu%2FqK9AzKWikfOptmVunxPFv0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;핫키 호출에 의한 메시지 박스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Hello Ctrl + Alt + 1 이라는 메시지 박스가 잘 떴나요?&lt;/p&gt;
&lt;p&gt;그렇다면 성공입니다. 잘하셨습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 마지막에서 두 번째로 지정했던 핫키를 호출해보겠습니다.&lt;/p&gt;
&lt;p&gt;#Space 로 지정되어 있죠. Win + Space 키를 눌러보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hello Win + Space 라는 메시지 박스가 잘 떴나요? 잘하셨습니다.&lt;/p&gt;
&lt;p&gt;이제 OK 버튼을 눌러 메시지 박스를 닫아 보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;앗? 그런데 메시지 박스가 또 뜨지 않나요?&lt;/p&gt;
&lt;p&gt;OK 를 눌러 메시지 박스를 닫으시고, 다시 한번 실행해보도록 할게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;네, Win + Space 키를 다시 눌러보세요.&lt;/p&gt;
&lt;p&gt;Hello Win + Space 메시지가 뜨겠죠.&lt;/p&gt;
&lt;p&gt;이제 OK 를 누르면 메시지 박스가 그냥 닫히고 끝나기를 기대하고 있었는데,&lt;/p&gt;
&lt;p&gt;Hello Ctrl + Alt + 1 이라는 메시지 박스가 또 떠 버리네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diBtG5/btqEtOVjmP7/TyRIuzIbuaBLhYiOFmXuXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diBtG5/btqEtOVjmP7/TyRIuzIbuaBLhYiOFmXuXK/img.png&quot; data-alt=&quot;핫키 호출에 의한 메시지 박스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diBtG5/btqEtOVjmP7/TyRIuzIbuaBLhYiOFmXuXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiBtG5%2FbtqEtOVjmP7%2FTyRIuzIbuaBLhYiOFmXuXK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;핫키 호출에 의한 메시지 박스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4AzMa/btqEtESVWGu/qK9AzKWikfOptmVunxPFv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4AzMa/btqEtESVWGu/qK9AzKWikfOptmVunxPFv0/img.png&quot; data-alt=&quot;핫키 호출에 의한 메시지 박스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4AzMa/btqEtESVWGu/qK9AzKWikfOptmVunxPFv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4AzMa%2FbtqEtESVWGu%2FqK9AzKWikfOptmVunxPFv0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;핫키 호출에 의한 메시지 박스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;일단은 두 개의 메시지 박스를 모두 닫아 보고,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그전에 지정한 핫키를 눌러보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;스크립트에는 +Enter 로 지정되어 있죠.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Shift + Enter 키를 눌러 실행해보세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Hello Shift + Enter 메시지 박스가 잘 떴나요?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;OK 를 눌러보세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Hello Win + Space 메시지가 뜨는군요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;OK 를 또 한 번 눌러보세요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Hello Ctrl + Alt + 1 메시지가 뜨네요.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;대충 어떻게 된 건지 짐작이 되시나요?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;작성한 스크립트를 보고 잠시 생각할 시간을 드리겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmWgQn/btqEtE6oqjw/wpeoA1EdqIVAHzvBELmMa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmWgQn/btqEtE6oqjw/wpeoA1EdqIVAHzvBELmMa1/img.png&quot; data-alt=&quot;핫키 호출에 의한 메시지 박스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmWgQn/btqEtE6oqjw/wpeoA1EdqIVAHzvBELmMa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmWgQn%2FbtqEtE6oqjw%2FwpeoA1EdqIVAHzvBELmMa1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;핫키 호출에 의한 메시지 박스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diBtG5/btqEtOVjmP7/TyRIuzIbuaBLhYiOFmXuXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diBtG5/btqEtOVjmP7/TyRIuzIbuaBLhYiOFmXuXK/img.png&quot; data-alt=&quot;핫키 호출에 의한 메시지 박스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diBtG5/btqEtOVjmP7/TyRIuzIbuaBLhYiOFmXuXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiBtG5%2FbtqEtOVjmP7%2FTyRIuzIbuaBLhYiOFmXuXK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;핫키 호출에 의한 메시지 박스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4AzMa/btqEtESVWGu/qK9AzKWikfOptmVunxPFv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4AzMa/btqEtESVWGu/qK9AzKWikfOptmVunxPFv0/img.png&quot; data-alt=&quot;핫키 호출에 의한 메시지 박스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4AzMa/btqEtESVWGu/qK9AzKWikfOptmVunxPFv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4AzMa%2FbtqEtESVWGu%2FqK9AzKWikfOptmVunxPFv0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;핫키 호출에 의한 메시지 박스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;네, 맞습니다.&lt;/p&gt;
&lt;p&gt;오토핫키 스크립트를 작성한 순서대로 실행이 되네요.&lt;/p&gt;
&lt;p&gt;위에서부터 아래로 말이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그렇다면 내가 원하는 부분만 실행하는 방법은 없는 걸까요?&lt;/p&gt;
&lt;p&gt;물론 있습니다. 바로 return 명령어를 사용하시면 됩니다.&lt;/p&gt;
&lt;p&gt;return 명령어는 여러 가지 의미로 쓰일 수 있지만,&lt;/p&gt;
&lt;p&gt;여기에서는 일단 '끝낸다' 라는 의미로 해석하셔도 될 것 같습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;return 문을 어디에 작성하느냐면,&lt;/p&gt;
&lt;p&gt;여러분이 원하는 구문 끝에 입력하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예를 들어, Ctrl + 1 단축키를 누르면,&lt;/p&gt;
&lt;p&gt;Hello Alt + 1 메시지 박스만 출력하고 끝내고 싶은 경우에는&lt;/p&gt;
&lt;p&gt;다음과 같이 코드를 수정해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;수정 전&amp;gt;&lt;/p&gt;
&lt;pre class=&quot;show-language remove-initial-line-feed copy-to-clipboard-button autohotkey&quot;&gt;&lt;code&gt;^1::
MsgBox, Hello Ctrl + 1

!a::
MsgBox, Hello Alt + a

(생략...)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;수정 후&amp;gt;&lt;/p&gt;
&lt;pre class=&quot;show-language remove-initial-line-feed copy-to-clipboard-button autohotkey&quot;&gt;&lt;code&gt;^1::
MsgBox, Hello Ctrl + 1
return

!a::
MsgBox, Hello Alt + a

(생략...)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;return 코드를 넣고 수정하셨으면,&lt;/p&gt;
&lt;p&gt;스크립트 저장 후, F5 키를 눌러 실행해보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;앗! 잠시만요!&lt;/p&gt;
&lt;p&gt;실행하시기 전에, 먼저 기존에 실행되어 있던 오토핫키를 종료하세요.&lt;/p&gt;
&lt;p&gt;종료하는 방법은 이전에 배웠으니,&lt;/p&gt;
&lt;p&gt;만약에 기억이 나지 않는다면 되돌아가서 복습을 하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;자, 다시 실행하셨으면 Ctrl + 1 키를 눌러볼까요?&lt;/p&gt;
&lt;p&gt;메시지 박스가 떠야 하는데,&lt;/p&gt;
&lt;p&gt;웬 이상한 프로그램 하나가 뜨지 않나요?&lt;/p&gt;
&lt;p&gt;Smart GUI 라는 녀석은 대체 뭐하는 놈인지 모르겠네요.&lt;/p&gt;
&lt;p&gt;사실 이건 아주 한참 뒤에 다룰 녀석인데 말이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U3AzL/btqEuAbaKfL/mSvpC6NSdGgTOBkboMPPI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U3AzL/btqEuAbaKfL/mSvpC6NSdGgTOBkboMPPI0/img.png&quot; data-alt=&quot;Smart GUI Creator&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U3AzL/btqEuAbaKfL/mSvpC6NSdGgTOBkboMPPI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU3AzL%2FbtqEuAbaKfL%2FmSvpC6NSdGgTOBkboMPPI0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Smart GUI Creator&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우리가 기대했던 Hello Ctrl + 1 메시지 박스가 뜨지 않은 이유가 있습니다.&lt;/p&gt;
&lt;p&gt;바로, SciTE4AutoHotkey 에디터에&lt;/p&gt;
&lt;p&gt;Ctrl + 1 이라는 단축키가 이미 지정되어 있었기 때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일단은 Smart GUI 프로그램을 닫아 보세요.&lt;/p&gt;
&lt;p&gt;그리고 오토핫키 에디터가 아닌 다른 창을 클릭하여 활성화해보시기 바랍니다.&lt;/p&gt;
&lt;p&gt;예를 들어 메모장을 활성화해볼게요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메모장이 활성화된 상태에서, Ctrl + 1 키를 눌러보세요.&lt;/p&gt;
&lt;p&gt;네, 드디어 우리가 원했던 메시지 박스가 출력되었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제, 떨리는 마음으로 OK 를 눌러보겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오! 깔끔하게 한 번만 뜨고 더 이상 다음 코드가 진행되지 않았어요!&lt;/p&gt;
&lt;p&gt;아주 잘하셨습니다. 아주 험난하고 긴 여정이었습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;return 문의 위치를 이곳 저것에 바꾸어 가면서&lt;/p&gt;
&lt;p&gt;테스트해보시기 바랍니다. 돈이 들지 않으니까요.&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/7</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%95%AB%ED%82%A4-%EC%A7%80%EC%A0%95-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%952#entry7comment</comments>
      <pubDate>Thu, 28 May 2020 22:49:53 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 핫키 지정 및 사용법(1)</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%95%AB%ED%82%A4-%EC%A7%80%EC%A0%95-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;핫키&amp;nbsp;지정&amp;nbsp;및&amp;nbsp;사용법(1)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 핫키(Hot key)란?&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;핫키(Hot key)란 단축키를 말하며, Shortcut 이라는 용어로도 쓰입니다.&lt;/p&gt;
&lt;p&gt;어떤 키를 눌렀을 때, 특정한 동작을 수행하도록 할 때 사용합니다.&lt;/p&gt;
&lt;p&gt;우리는 이미 핫키를 다양한 형태로 쓰고 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;범용적으로 가장 많이 쓰는 예로는,&lt;/p&gt;
&lt;p&gt;Ctrl + c (복사) 및 Ctrl + v (붙여넣기) 단축키가 있죠.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;이미지 014.png&quot; data-origin-width=&quot;333&quot; data-origin-height=&quot;405&quot; width=&quot;253&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BcOJT/btqEn80UFSW/rK4iwbApy8lS0QzdFcY2f0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BcOJT/btqEn80UFSW/rK4iwbApy8lS0QzdFcY2f0/img.png&quot; data-alt=&quot;Ctrl + c (복사)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BcOJT/btqEn80UFSW/rK4iwbApy8lS0QzdFcY2f0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBcOJT%2FbtqEn80UFSW%2FrK4iwbApy8lS0QzdFcY2f0%2Fimg.png&quot; data-filename=&quot;이미지 014.png&quot; data-origin-width=&quot;333&quot; data-origin-height=&quot;405&quot; width=&quot;253&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Ctrl + c (복사)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;이미지 015.png&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;426&quot; width=&quot;235&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7iOG3/btqEnHoWUkX/6hFNWbF5DKniiPQHUAX6EK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7iOG3/btqEnHoWUkX/6hFNWbF5DKniiPQHUAX6EK/img.png&quot; data-alt=&quot;Ctrl + v (붙여넣기)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7iOG3/btqEnHoWUkX/6hFNWbF5DKniiPQHUAX6EK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7iOG3%2FbtqEnHoWUkX%2F6hFNWbF5DKniiPQHUAX6EK%2Fimg.png&quot; data-filename=&quot;이미지 015.png&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;426&quot; width=&quot;235&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Ctrl + v (붙여넣기)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;크롬 브라우저를 예를 들어 볼까요?&lt;/p&gt;
&lt;p&gt;F1 키를 눌러보세요. 도움말이 뜨죠?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;561&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czjTX7/btqEp08sEgT/50rmUt7s4vftWEpkqQ47Xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czjTX7/btqEp08sEgT/50rmUt7s4vftWEpkqQ47Xk/img.png&quot; data-alt=&quot;F1 (도움말)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czjTX7/btqEp08sEgT/50rmUt7s4vftWEpkqQ47Xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczjTX7%2FbtqEp08sEgT%2F50rmUt7s4vftWEpkqQ47Xk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;561&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;F1 (도움말)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Alt + d 키를 조합하여 눌러보면 주소창으로 포커스가 이동됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;667&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JohXm/btqEoBhwWKJ/Lw52qdSz5Hce48uGlAKlnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JohXm/btqEoBhwWKJ/Lw52qdSz5Hce48uGlAKlnK/img.png&quot; data-alt=&quot;Alt + d (주소창으로 포커스 이동)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JohXm/btqEoBhwWKJ/Lw52qdSz5Hce48uGlAKlnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJohXm%2FbtqEoBhwWKJ%2FLw52qdSz5Hce48uGlAKlnK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;667&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Alt + d (주소창으로 포커스 이동)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Ctrl + Shift + Delete 키를 조합하여 눌러보면 인터넷 사용 기록 삭제 창이 뜹니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;440&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bihyBi/btqEqtiiZbq/6WwH7gQRgRsoWQzd7zwrk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bihyBi/btqEqtiiZbq/6WwH7gQRgRsoWQzd7zwrk1/img.png&quot; data-alt=&quot;Ctrl + Shift + Delete (인터넷 사용 기록 삭제)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bihyBi/btqEqtiiZbq/6WwH7gQRgRsoWQzd7zwrk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbihyBi%2FbtqEqtiiZbq%2F6WwH7gQRgRsoWQzd7zwrk1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;440&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Ctrl + Shift + Delete (인터넷 사용 기록 삭제)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇듯 단축키를 알고 있으면, 원하는 동작을 빠르게 수행할 수가 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키는 이름에 걸맞게, 이러한 단축키,&lt;/p&gt;
&lt;p&gt;즉, 핫키 지정에 매우 특화되어 있는 스크립트 언어입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 핫키 지정 및 사용법&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;핫키를 지정하는 방법은 매우 간단합니다.&lt;/p&gt;
&lt;p&gt;핫키로 지정하기 원하는 키를 입력하고 그 오른쪽에 콜론(:) 두 개를 연달아 붙이면 됩니다.&lt;/p&gt;
&lt;p&gt;예를 들어 F1 키를 핫키로 정의하고 싶다면, 다음과 같이 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F1::&lt;/p&gt;
&lt;p&gt;{{명령어}}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;핫키를 사용하는 방법은 더 간단하죠.&lt;/p&gt;
&lt;p&gt;앞에서 지정했던 핫키를 단순히 누르기만 하면 됩니다.&lt;/p&gt;
&lt;p&gt;물론, 오토핫키를 실행한 상태여야 하겠죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그럼 핫키가 제대로 지정되었는지 확인해보기 위해,&lt;/p&gt;
&lt;p&gt;앞장에서 잠시 다루었던 MsgBox 명령어를 잠시 복습해볼까요?&lt;/p&gt;
&lt;p&gt;F1 키를 누르면 Hello World! 라는 메시지 박스가 호출되도록 코딩해봅시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F1::&lt;/p&gt;
&lt;p&gt;MsgBox, Hello World!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이와 같이 작성하셨으면,&lt;/p&gt;
&lt;p&gt;F5 키를 눌러 오토핫키를 실행합니다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이제 F1 키를 눌러 보세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhZQOd/btqEq8LKnol/J9pm7adYq6kl1PKG0kXKTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhZQOd/btqEq8LKnol/J9pm7adYq6kl1PKG0kXKTK/img.png&quot; data-alt=&quot;MsgBox (메시지 박스)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhZQOd/btqEq8LKnol/J9pm7adYq6kl1PKG0kXKTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhZQOd%2FbtqEq8LKnol%2FJ9pm7adYq6kl1PKG0kXKTK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox (메시지 박스)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Hello World! 라는 메시지 박스가 잘 뜨나요?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;아주 잘하셨습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그런데 앞 장에서 실행했을 때와는 살짝 차이점이 있어요.&lt;/p&gt;
&lt;p&gt;먼저 코드부터 비교해볼까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;앞 장에서 작성했던 코드입니다.&lt;/p&gt;
&lt;p&gt;MsgBox, Hello World!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 좀 전에 작성한 코드입니다.&lt;/p&gt;
&lt;p&gt;F1::&lt;/p&gt;
&lt;p&gt;MsgBox, Hello World!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드 상의 차이점이 보이시나요?&lt;/p&gt;
&lt;p&gt;네, 맞습니다. F1 핫키를 지정하기 위한 한 줄이 추가되었네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;결과의 차이는 어떨까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;앞 장에서는 F5 키를 눌러 실행하자마자 메시지 박스가 떴습니다.&lt;/p&gt;
&lt;p&gt;그리고 확인 버튼을 누르면 곧바로 오토핫키가 종료되었죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그런데 좀 전에는 F5 키를 눌러 실행하면 아무런 반응이 없습니다.&lt;/p&gt;
&lt;p&gt;여러분이 지정한 F1 키를 눌러야만 비로소 메시지 박스가 뜹니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 또 하나의 차이가 있는데,&lt;/p&gt;
&lt;p&gt;눈썰미가 아주 좋은 분들은 눈치채셨을지도 모르겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메시지 박스를 닫더라도, 오토핫키는 종료되지 않고,&lt;/p&gt;
&lt;p&gt;트레이 아이콘에 꿋꿋하게 남아 있는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;간혹 오토핫키 트레이 아이콘이 여러 개 떠 있는 경우도 있는데,&lt;/p&gt;
&lt;p&gt;이런 경우 오작동의 가능성이 있으니 주의하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;트레이 아이콘을 잘 살펴보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음 장에서는 핫키를 조합하는 방법에 대해 살펴보겠습니다.&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/6</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%95%AB%ED%82%A4-%EC%A7%80%EC%A0%95-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95#entry6comment</comments>
      <pubDate>Mon, 25 May 2020 22:57:13 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 실행과 종료</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%8B%A4%ED%96%89%EA%B3%BC-%EC%A2%85%EB%A3%8C</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;실행과&amp;nbsp;종료&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;에디터 환경설정까지 했으니, 이제 오토핫키를 실행하고 종료하는 방법에 대해 알아보도록 해요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실행이 잘 됐는지 안 됐는지 확인하기 위해,&lt;/p&gt;
&lt;p&gt;먼저 간단한 명령어부터 하나 배워 봅시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메시지 박스인데요, 팝업창을 하나 띄워 사용자에게 메시지를 보여주는 명령어입니다.&lt;/p&gt;
&lt;p&gt;인터넷 브라우저나 기타 여러 프로그램에서 흔히 볼 수 있는 팝업창입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvjxpO/btqEiNbKzUO/ScPVMEiKHcGdRY0BjZLBwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvjxpO/btqEiNbKzUO/ScPVMEiKHcGdRY0BjZLBwK/img.png&quot; data-alt=&quot;MsgBox&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvjxpO/btqEiNbKzUO/ScPVMEiKHcGdRY0BjZLBwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvjxpO%2FbtqEiNbKzUO%2FScPVMEiKHcGdRY0BjZLBwK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;다음의 코드 한 줄을 에디터에 입력해보세요.&lt;/p&gt;
&lt;pre class=&quot;line-numbers show-language remove-initial-line-feed copy-to-clipboard-button autohotkey&quot;&gt;&lt;code&gt;MsgBox, Hello World!&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이제 실행 버튼을 눌러보세요. 단축키로는 F5입니다. 마우스 포인터를 해당 버튼 위에 가져다 놓으면 Tooltip 형태로 설명이 나타납니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;307&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G0ru0/btqEiMqqjKS/0hGeNciqzAvwCZ4GiRHAR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G0ru0/btqEiMqqjKS/0hGeNciqzAvwCZ4GiRHAR1/img.png&quot; data-alt=&quot;AutoHotkey 실행 버튼&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G0ru0/btqEiMqqjKS/0hGeNciqzAvwCZ4GiRHAR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG0ru0%2FbtqEiMqqjKS%2F0hGeNciqzAvwCZ4GiRHAR1%2Fimg.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;307&quot; data-filename=&quot;blob&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AutoHotkey 실행 버튼&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;앞에서 제가 메시지 박스를 띄웠던 것처럼 실행은 안 되고, 웬 엉뚱한 창이 떴나요?&lt;/p&gt;
&lt;p&gt;파일을 먼저 저장해야만 실행이 가능하기 때문입니다. 원하는 파일명을 입력 후 저장하세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUimdC/btqEimFupHu/r1GuWFZP3XQz9n5M2IWHc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUimdC/btqEimFupHu/r1GuWFZP3XQz9n5M2IWHc0/img.png&quot; data-alt=&quot;파일 저장&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUimdC/btqEimFupHu/r1GuWFZP3XQz9n5M2IWHc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUimdC%2FbtqEimFupHu%2Fr1GuWFZP3XQz9n5M2IWHc0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파일 저장&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;저장 버튼을 누르고 나면, 곧바로 실행이 됩니다. 이제 드디어 원하던 메시지 박스가 보이겠죠?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvjxpO/btqEiNbKzUO/ScPVMEiKHcGdRY0BjZLBwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvjxpO/btqEiNbKzUO/ScPVMEiKHcGdRY0BjZLBwK/img.png&quot; data-alt=&quot;MsgBox&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvjxpO/btqEiNbKzUO/ScPVMEiKHcGdRY0BjZLBwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvjxpO%2FbtqEiNbKzUO%2FScPVMEiKHcGdRY0BjZLBwK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MsgBox&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;한 번 저장한 이후부터는 실행 버튼(F5)을 누르자마자, 곧바로 실행이 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메시지 박스가 띄워진 상태에서 트레이 아이콘 영역을 살펴볼까요?&lt;/p&gt;
&lt;p&gt;녹색 바탕에 H 라고 적힌 글자가 보입니다. 이것이 오토핫키 기본 아이콘입니다.&lt;/p&gt;
&lt;p&gt;이 아이콘이 떠 있다는 것은, 오토핫키가 실행되고 있다는 뜻입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLh5Ct/btqEjPGGPL1/LRNZCJVdPUwxDdcO1jGsXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLh5Ct/btqEjPGGPL1/LRNZCJVdPUwxDdcO1jGsXK/img.png&quot; data-alt=&quot;Tray Icon&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLh5Ct/btqEjPGGPL1/LRNZCJVdPUwxDdcO1jGsXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLh5Ct%2FbtqEjPGGPL1%2FLRNZCJVdPUwxDdcO1jGsXK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Tray Icon&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;메시지 박스의 OK 버튼을 누르면 이 트레이 아이콘이 사라지는 것도 한번 확인해보세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;앞에서 오토핫키 &lt;span style=&quot;color: #333333;&quot;&gt;아이콘이 떠 있다는 것은,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;오토핫키가 실행되고 있다는 뜻이라고 말씀드렸습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그렇다면 아이콘이 사라졌다는 것은 무엇을 의미할까요?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;네, 오토핫키가 종료되었다는 뜻입니다.&lt;/p&gt;
&lt;p&gt;기본적으로 실행이 끝나면 자동으로 종료가 되는군요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F5 키를 눌러 다시 한번 오토핫키를 실행해보세요.&lt;/p&gt;
&lt;p&gt;이번에는 메시지 박스의 OK 버튼을 누르지 않고 종료해봅시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;트레이 아이콘을 마우스 우클릭하면 다음과 같은 콘텍스트 메뉴가 뜹니다.&lt;/p&gt;
&lt;p&gt;여기서 Exit 메뉴를 선택해보세요. 이렇게 강제로 오토핫키를 종료할 수도 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xAsTv/btqEkaqmax5/Hma02CB0MGqHwwdHX8U5U0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xAsTv/btqEkaqmax5/Hma02CB0MGqHwwdHX8U5U0/img.png&quot; data-alt=&quot;트레이 아이콘을 통해 오토핫키를 종료하는 방법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xAsTv/btqEkaqmax5/Hma02CB0MGqHwwdHX8U5U0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxAsTv%2FbtqEkaqmax5%2FHma02CB0MGqHwwdHX8U5U0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;트레이 아이콘을 통해 오토핫키를 종료하는 방법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 물론 작업 관리자(Ctrl + Shift + ESC) 를 통해서 강제 종료하는 방법도 있겠죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ctrl + Alt + Delete 를 누르고 작업 관리자를 띄우시는 분들도 많은데, Ctrl + Shift + ESC 단축키를 쓰면 좀 더 간편하게 작업 관리자를 띄울 수 있습니다. 왼손 엄지로 Ctrl 과 Shift 를 함께 누르고, 같은 손 중지로 ESC 를 누르면 쉬워요. (Too Much Information?)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sSMce/btqEkaKB9os/KO6aLsP3Hnm3TkmBZ7wUR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sSMce/btqEkaKB9os/KO6aLsP3Hnm3TkmBZ7wUR1/img.png&quot; data-alt=&quot;작업 관리자를 통해 오토핫키를 종료하는 방법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sSMce/btqEkaKB9os/KO6aLsP3Hnm3TkmBZ7wUR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsSMce%2FbtqEkaKB9os%2FKO6aLsP3Hnm3TkmBZ7wUR1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;작업 관리자를 통해 오토핫키를 종료하는 방법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게 오토핫키의 실행과 종료하는 방법을 알아보았습니다.&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/5</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EC%8B%A4%ED%96%89%EA%B3%BC-%EC%A2%85%EB%A3%8C#entry5comment</comments>
      <pubDate>Thu, 21 May 2020 22:02:15 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 환경설정</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;[오토핫키]&amp;nbsp;환경설정&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;SciTE4AutoHotkey 에디터를 열고,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Ctrl + n 을 누르면, 새 파일을 작성할 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;아직 코드를 배우기 전이므로, 우선 아무 글자나 적어볼까요?&lt;br /&gt;영어로도 몇 자 적어보고, 한글로도 몇 자 적어보세요.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Hello world!&lt;br /&gt;안녕하세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;I4icddmcddy0ksD9W0_dQ6dLtgek&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cStbZS/btqEiMRsw5R/GkrqNCgoIuICQGsPruTL3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cStbZS/btqEiMRsw5R/GkrqNCgoIuICQGsPruTL3K/img.png&quot; data-alt=&quot;한글 깨짐 현상&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cStbZS/btqEiMRsw5R/GkrqNCgoIuICQGsPruTL3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcStbZS%2FbtqEiMRsw5R%2FGkrqNCgoIuICQGsPruTL3K%2Fimg.png&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;I4icddmcddy0ksD9W0_dQ6dLtgek&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;한글 깨짐 현상&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;앗? 한글 작성이 어색하지 않나요? 타이핑한 글자가 화면에 나타나지 않거나, 깨져서 나올 것입니다. 타이핑하다가 BackSpace 또는 Delete 버튼을 눌러도 희한한 글자가 나타나기도 합니다.&lt;br /&gt;&lt;br /&gt;한글을 정상적으로 입력하기 위해 다음과 같이 설정하세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;IBe35KQqw-WCl0zJMPG8inVFlIDI&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u1QZr/btqEjpobpcq/YYLDen024m2nufEuBAIIG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u1QZr/btqEjpobpcq/YYLDen024m2nufEuBAIIG0/img.png&quot; data-alt=&quot;SciTE4AutoHotkey settings1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u1QZr/btqEjpobpcq/YYLDen024m2nufEuBAIIG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu1QZr%2FbtqEjpobpcq%2FYYLDen024m2nufEuBAIIG0%2Fimg.png&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;IBe35KQqw-WCl0zJMPG8inVFlIDI&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey settings1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;상단 메뉴바의 Tools - SciTe4AutoHotkey settings...&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;File codepage: Korean Wansung&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;선택 후 Update 버튼을 누르고 설정 창을 닫으시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;238&quot; height=&quot;209&quot; data-width=&quot;238&quot; data-height=&quot;209&quot; data-attachment-id=&quot;IAyC2sru0npcFC2MujIS_HktavYQ&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfEg2B/btqEilT13LN/itat0xQo3qI3atBH50pGu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfEg2B/btqEilT13LN/itat0xQo3qI3atBH50pGu0/img.png&quot; data-alt=&quot;SciTE4AutoHotkey settings2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfEg2B/btqEilT13LN/itat0xQo3qI3atBH50pGu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfEg2B%2FbtqEilT13LN%2Fitat0xQo3qI3atBH50pGu0%2Fimg.png&quot; width=&quot;238&quot; height=&quot;209&quot; data-width=&quot;238&quot; data-height=&quot;209&quot; data-attachment-id=&quot;IAyC2sru0npcFC2MujIS_HktavYQ&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey settings2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;238&quot; height=&quot;209&quot; data-width=&quot;238&quot; data-height=&quot;209&quot; data-attachment-id=&quot;I4GTfjH62tEeOtjeXNvV05H7B6mA&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAzm3v/btqElklqBic/OIXmkWGexnqSamTALg2QU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAzm3v/btqElklqBic/OIXmkWGexnqSamTALg2QU1/img.png&quot; data-alt=&quot;SciTE4AutoHotkey settings3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAzm3v/btqElklqBic/OIXmkWGexnqSamTALg2QU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAzm3v%2FbtqElklqBic%2FOIXmkWGexnqSamTALg2QU1%2Fimg.png&quot; width=&quot;238&quot; height=&quot;209&quot; data-width=&quot;238&quot; data-height=&quot;209&quot; data-attachment-id=&quot;I4GTfjH62tEeOtjeXNvV05H7B6mA&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey settings3&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Update 버튼을 눌러도 화면 상에는 큰 변화가 없으니 당황하지 말고 바로 설정 창을 닫으시면 됩니다.&lt;br /&gt;&lt;br /&gt;에디터 창에 다시 한번 한글을 입력해보세요.&lt;br /&gt;&lt;br /&gt;또 한 가지 팁!&lt;br /&gt;Ctrl + 마우스 휠 버튼을 돌리면 글자 크기를 확대하거나 축소할 수 있습니다.&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;IzFaBHqW4-asKiBhBwADieM-xLfs&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9hd5T/btqEj9x7F1T/WOSeEUZt9ApUmT27a5Ngv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9hd5T/btqEj9x7F1T/WOSeEUZt9ApUmT27a5Ngv0/img.png&quot; data-alt=&quot;SciTE4AutoHotkey 글자 크기 변경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9hd5T/btqEj9x7F1T/WOSeEUZt9ApUmT27a5Ngv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9hd5T%2FbtqEj9x7F1T%2FWOSeEUZt9ApUmT27a5Ngv0%2Fimg.png&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;IzFaBHqW4-asKiBhBwADieM-xLfs&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey 글자 크기 변경&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/4</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95#entry4comment</comments>
      <pubDate>Thu, 21 May 2020 20:59:49 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 오토핫키 및 전용 에디터 설치</title>
      <link>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B0%8F-%EC%A0%84%EC%9A%A9-%EC%97%90%EB%94%94%ED%84%B0-%EC%84%A4%EC%B9%98</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;[오토핫키]&amp;nbsp;오토핫키&amp;nbsp;및&amp;nbsp;전용&amp;nbsp;에디터&amp;nbsp;설치&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;1. 오토핫키 설치&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;검색엔진에서 AutoHotkey 를 검색하거나, 오토핫키 사이트를 통해 오토핫키 설치 파일을 다운로드 합니다.&lt;/p&gt;
&lt;p&gt;다운로드 사이트의 URL 은 다음과 같습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://autohotkey.com/download/&quot;&gt;https://autohotkey.com/download/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;1191&quot; height=&quot;834&quot; data-width=&quot;1191&quot; data-height=&quot;834&quot; data-attachment-id=&quot;Im-uj-mwnBKrGTJijYlaJDLxyb_M&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drLMGr/btqEkaJzKFB/Bjl2k6ggh9veVuCXcIYkn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drLMGr/btqEkaJzKFB/Bjl2k6ggh9veVuCXcIYkn0/img.png&quot; data-alt=&quot;AutoHotkey 검색&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drLMGr/btqEkaJzKFB/Bjl2k6ggh9veVuCXcIYkn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrLMGr%2FbtqEkaJzKFB%2FBjl2k6ggh9veVuCXcIYkn0%2Fimg.png&quot; width=&quot;1191&quot; height=&quot;834&quot; data-width=&quot;1191&quot; data-height=&quot;834&quot; data-attachment-id=&quot;Im-uj-mwnBKrGTJijYlaJDLxyb_M&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AutoHotkey 검색&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;1191&quot; height=&quot;834&quot; data-width=&quot;1191&quot; data-height=&quot;834&quot; data-attachment-id=&quot;IhX_CLKeTa3ZeienxFOgBOtonTSI&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lGDpx/btqEj9jBbIT/cgBHNKTQXDnY8qNAGduEq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lGDpx/btqEj9jBbIT/cgBHNKTQXDnY8qNAGduEq0/img.png&quot; data-alt=&quot;오토핫키 다운로드 페이지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lGDpx/btqEj9jBbIT/cgBHNKTQXDnY8qNAGduEq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlGDpx%2FbtqEj9jBbIT%2FcgBHNKTQXDnY8qNAGduEq0%2Fimg.png&quot; width=&quot;1191&quot; height=&quot;834&quot; data-width=&quot;1191&quot; data-height=&quot;834&quot; data-attachment-id=&quot;IhX_CLKeTa3ZeienxFOgBOtonTSI&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오토핫키 다운로드 페이지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Download AutoHotKey Installer 라고 쓰인 청록색 버튼을 누르면, 설치 파일을 받을 수 있습니다.&lt;br /&gt;&lt;br /&gt;설치 파일을 실행하세요.&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;602&quot; height=&quot;427&quot; data-width=&quot;602&quot; data-height=&quot;427&quot; data-attachment-id=&quot;I7aPsPR9bT2vJ-l6tAgtfmRPfS3I&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8MRTJ/btqEgRk5BPh/ucDR57UteJkS60kgGZf4B0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8MRTJ/btqEgRk5BPh/ucDR57UteJkS60kgGZf4B0/img.png&quot; data-alt=&quot;오토핫키 설치1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8MRTJ/btqEgRk5BPh/ucDR57UteJkS60kgGZf4B0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8MRTJ%2FbtqEgRk5BPh%2FucDR57UteJkS60kgGZf4B0%2Fimg.png&quot; width=&quot;602&quot; height=&quot;427&quot; data-width=&quot;602&quot; data-height=&quot;427&quot; data-attachment-id=&quot;I7aPsPR9bT2vJ-l6tAgtfmRPfS3I&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오토핫키 설치1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;602&quot; height=&quot;427&quot; data-width=&quot;602&quot; data-height=&quot;427&quot; data-attachment-id=&quot;IDZ3DU2J9H33QWegbf_OgNc7EWMs&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MV4zX/btqEimkcGvj/1DVqKMu89nRmmKhSd8vy70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MV4zX/btqEimkcGvj/1DVqKMu89nRmmKhSd8vy70/img.png&quot; data-alt=&quot;오토핫키 설치2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MV4zX/btqEimkcGvj/1DVqKMu89nRmmKhSd8vy70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMV4zX%2FbtqEimkcGvj%2F1DVqKMu89nRmmKhSd8vy70%2Fimg.png&quot; width=&quot;602&quot; height=&quot;427&quot; data-width=&quot;602&quot; data-height=&quot;427&quot; data-attachment-id=&quot;IDZ3DU2J9H33QWegbf_OgNc7EWMs&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오토핫키 설치2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;Express Installation 을 누르면 눈 깜짝할 사이에 설치가 완료됩니다. Exit 버튼을 눌러 설치를 마무리합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 오토핫키 전용 에디터 설치&lt;/h4&gt;
&lt;p&gt;&lt;br /&gt;매크로 작성을 편하게 하려면, 한 가지 더 설치해야 할 프로그램이 있습니다. 바로, SciTE4AutoHotKey 라는 에디터입니다.&lt;br /&gt;&lt;br /&gt;검색엔진에서 SciTE4AutoHotKey 를 검색하거나, 다음의 URL 에 직접 접속하여 설치 파일을 다운로드하세요.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://fincs.ahk4.net/scite4ahk/&quot;&gt;http://fincs.ahk4.net/scite4ahk/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;1191&quot; height=&quot;834&quot; data-width=&quot;1191&quot; data-height=&quot;834&quot; data-attachment-id=&quot;IE1WKx7eviNZgQuMrvb_dz4YWdhk&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AMo5s/btqEh6aKrHz/BkIJsNHOfzoLwvK6UksOdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AMo5s/btqEh6aKrHz/BkIJsNHOfzoLwvK6UksOdK/img.png&quot; data-alt=&quot;SciTE4AutoHotkey 다운로드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AMo5s/btqEh6aKrHz/BkIJsNHOfzoLwvK6UksOdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAMo5s%2FbtqEh6aKrHz%2FBkIJsNHOfzoLwvK6UksOdK%2Fimg.png&quot; width=&quot;1191&quot; height=&quot;834&quot; data-width=&quot;1191&quot; data-height=&quot;834&quot; data-attachment-id=&quot;IE1WKx7eviNZgQuMrvb_dz4YWdhk&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey 다운로드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Installer 라고 크게 적혀 있는 링크를 누르면, 설치 파일을 다운로드할 수 있습니다.&lt;br /&gt;&lt;br /&gt;설치가 완료되면 파일을 실행하세요.&lt;br /&gt;&lt;br /&gt;Install 버튼을 누르고 다음 화면에서 한번 더 Install 버튼을 누르면, 이번에도 순식간에 설치가 완료됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;602&quot; height=&quot;427&quot; data-width=&quot;602&quot; data-height=&quot;427&quot; data-attachment-id=&quot;Iev4fD92XRdwx8ydYl_di74p3Erk&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C52j8/btqEjpgn0Ca/yz6WBP5UHqvPWyFRbR0jiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C52j8/btqEjpgn0Ca/yz6WBP5UHqvPWyFRbR0jiK/img.png&quot; data-alt=&quot;SciTE4AutoHotkey 설치1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C52j8/btqEjpgn0Ca/yz6WBP5UHqvPWyFRbR0jiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC52j8%2FbtqEjpgn0Ca%2Fyz6WBP5UHqvPWyFRbR0jiK%2Fimg.png&quot; width=&quot;602&quot; height=&quot;427&quot; data-width=&quot;602&quot; data-height=&quot;427&quot; data-attachment-id=&quot;Iev4fD92XRdwx8ydYl_di74p3Erk&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey 설치1&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;602&quot; height=&quot;427&quot; data-width=&quot;602&quot; data-height=&quot;427&quot; data-attachment-id=&quot;I5YTRd0n30L1pckrPzJsM3qfRgTU&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D1CBp/btqEiMCUEEn/sGDd1KchrklJfGEXOZdDT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D1CBp/btqEiMCUEEn/sGDd1KchrklJfGEXOZdDT1/img.png&quot; data-alt=&quot;SciTE4AutoHotkey 설치2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D1CBp/btqEiMCUEEn/sGDd1KchrklJfGEXOZdDT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD1CBp%2FbtqEiMCUEEn%2FsGDd1KchrklJfGEXOZdDT1%2Fimg.png&quot; width=&quot;602&quot; height=&quot;427&quot; data-width=&quot;602&quot; data-height=&quot;427&quot; data-attachment-id=&quot;I5YTRd0n30L1pckrPzJsM3qfRgTU&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey 설치2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;346&quot; height=&quot;147&quot; data-width=&quot;346&quot; data-height=&quot;147&quot; data-attachment-id=&quot;Ixobs5bboeEYtxJ_hlGZq0qxrNuE&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRRtWu/btqEinpPDCB/7cUxIaCkZe679DV0TcSSD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRRtWu/btqEinpPDCB/7cUxIaCkZe679DV0TcSSD1/img.png&quot; data-alt=&quot;SciTE4AutoHotkey 설치3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRRtWu/btqEinpPDCB/7cUxIaCkZe679DV0TcSSD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRRtWu%2FbtqEinpPDCB%2F7cUxIaCkZe679DV0TcSSD1%2Fimg.png&quot; width=&quot;346&quot; height=&quot;147&quot; data-width=&quot;346&quot; data-height=&quot;147&quot; data-attachment-id=&quot;Ixobs5bboeEYtxJ_hlGZq0qxrNuE&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey 설치3&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;설치를 완료하면, 에디터가 자동 실행되며 샘플 소스코드가 보입니다. 경우에 따라, 곧바로 프로그램 업데이트를 할 것인지 뜨는 경우가 있을 것입니다. 그러면 자연스럽게 업데이트를 진행하시면 됩니다.&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;Ip93jcy_oXzrfDxSaJgJhEfgyhXU&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqPl8h/btqEjPloZGx/v9757nKb102D4EtWY81xQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqPl8h/btqEjPloZGx/v9757nKb102D4EtWY81xQ0/img.png&quot; data-alt=&quot;SciTE4AutoHotkey 설치4&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqPl8h/btqEjPloZGx/v9757nKb102D4EtWY81xQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqPl8h%2FbtqEjPloZGx%2Fv9757nKb102D4EtWY81xQ0%2Fimg.png&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;Ip93jcy_oXzrfDxSaJgJhEfgyhXU&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey 설치4&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;368&quot; height=&quot;154&quot; data-width=&quot;368&quot; data-height=&quot;154&quot; data-attachment-id=&quot;IZj_QtvR1GtpmUuzCN8gDnJKj2iM&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZEGe2/btqEhP8dRfe/TLz3sDHlLjd8RvzvAyNfJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZEGe2/btqEhP8dRfe/TLz3sDHlLjd8RvzvAyNfJ1/img.png&quot; data-alt=&quot;SciTE4AutoHotkey 설치5&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZEGe2/btqEhP8dRfe/TLz3sDHlLjd8RvzvAyNfJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZEGe2%2FbtqEhP8dRfe%2FTLz3sDHlLjd8RvzvAyNfJ1%2Fimg.png&quot; width=&quot;368&quot; height=&quot;154&quot; data-width=&quot;368&quot; data-height=&quot;154&quot; data-attachment-id=&quot;IZj_QtvR1GtpmUuzCN8gDnJKj2iM&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey 설치5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;413&quot; height=&quot;253&quot; data-width=&quot;413&quot; data-height=&quot;253&quot; data-attachment-id=&quot;IRrSR3jXpnuPJzlXGUj2Ej5eJ1eE&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHvm5k/btqEjql6oCm/387KLyBqe680zusp3DxFUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHvm5k/btqEjql6oCm/387KLyBqe680zusp3DxFUK/img.png&quot; data-alt=&quot;SciTE4AutoHotkey 설치6&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHvm5k/btqEjql6oCm/387KLyBqe680zusp3DxFUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHvm5k%2FbtqEjql6oCm%2F387KLyBqe680zusp3DxFUK%2Fimg.png&quot; width=&quot;413&quot; height=&quot;253&quot; data-width=&quot;413&quot; data-height=&quot;253&quot; data-attachment-id=&quot;IRrSR3jXpnuPJzlXGUj2Ej5eJ1eE&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey 설치6&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;I6XAq2lQLdGUx1SRcI5S02bfl8xQ&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NbAF0/btqEjCfsD1O/hhKtTKN3atf2GV2eiTntg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NbAF0/btqEjCfsD1O/hhKtTKN3atf2GV2eiTntg0/img.png&quot; data-alt=&quot;SciTE4AutoHotkey 설치7&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NbAF0/btqEjCfsD1O/hhKtTKN3atf2GV2eiTntg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNbAF0%2FbtqEjCfsD1O%2FhhKtTKN3atf2GV2eiTntg0%2Fimg.png&quot; width=&quot;970&quot; height=&quot;693&quot; data-width=&quot;970&quot; data-height=&quot;693&quot; data-attachment-id=&quot;I6XAq2lQLdGUx1SRcI5S02bfl8xQ&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SciTE4AutoHotkey 설치7&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/3</guid>
      <comments>https://learningnote.tistory.com/entry/%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4-%EB%B0%8F-%EC%A0%84%EC%9A%A9-%EC%97%90%EB%94%94%ED%84%B0-%EC%84%A4%EC%B9%98#entry3comment</comments>
      <pubDate>Wed, 20 May 2020 21:23:34 +0900</pubDate>
    </item>
    <item>
      <title>[오토핫키] 매크로 프로그램과 오토핫키</title>
      <link>https://learningnote.tistory.com/entry/%EB%A7%A4%ED%81%AC%EB%A1%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EA%B3%BC-%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[오토핫키]&amp;nbsp;매크로&amp;nbsp;프로그램과&amp;nbsp;오토핫키&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;매크로란 무엇일까요? 검색을 통해서 알아봅시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;네이버 검색(검색어: 매크로)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://terms.naver.com/entry.nhn?docId=1180058&amp;amp;cid=40942&amp;amp;categoryId=32828&quot;&gt;https://terms.naver.com/entry.nhn?docId=1180058&amp;amp;cid=40942&amp;amp;categoryId=32828&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1587913300741&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;매크로&quot; data-og-description=&quot;자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 매크로라고 한다. 여러 번 해야 하는 일을 간단하게 수행하기 위하여 사용하기도 하지만, 문서 안의 같은 문자열을 한꺼번에 변경할 때도 사용된다. 일련의 명령어를 반복하여 자주 사용할 때, 개개의 명령어를 일일이 사용하지 않고 하나의 키 입력으로 원하는 명령군을 수행할 수 있도록 된 프로그램 기능이다. 이에 대응하는 용어는 매크로 명령어로 되기 전의 개개의 기계어인 마이크로 명령이&quot; data-og-host=&quot;terms.naver.com&quot; data-og-source-url=&quot;https://terms.naver.com/entry.nhn?docId=1180058&amp;amp;cid=40942&amp;amp;categoryId=32828&quot; data-og-url=&quot;https://terms.naver.com/entry.nhn?cid=40942&amp;amp;docId=1180058&amp;amp;categoryId=32828&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gBAIi/hyFPDPRu53/ttTkMZcDj1xbVVDrgkN6v1/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270&quot;&gt;&lt;a href=&quot;https://terms.naver.com/entry.nhn?docId=1180058&amp;amp;cid=40942&amp;amp;categoryId=32828&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://terms.naver.com/entry.nhn?docId=1180058&amp;amp;cid=40942&amp;amp;categoryId=32828&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gBAIi/hyFPDPRu53/ttTkMZcDj1xbVVDrgkN6v1/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;매크로&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 매크로라고 한다. 여러 번 해야 하는 일을 간단하게 수행하기 위하여 사용하기도 하지만, 문서 안의 같은 문자열을 한꺼번에 변경할 때도 사용된다. 일련의 명령어를 반복하여 자주 사용할 때, 개개의 명령어를 일일이 사용하지 않고 하나의 키 입력으로 원하는 명령군을 수행할 수 있도록 된 프로그램 기능이다. 이에 대응하는 용어는 매크로 명령어로 되기 전의 개개의 기계어인 마이크로 명령이&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;terms.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;요약: 자주 사용하는 여러 개의 명령어를 묶어서 하나의 키 입력 동작으로 만든 것을 매크로라고 한다. 여러 번 해야 하는 일을 간단하게 수행하기 위하여 사용하기도 하지만, 문서 안의 같은 문자열을 한꺼번에 변경할 때도 사용된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;[네이버 지식백과]&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;매크로&lt;span&gt;&amp;nbsp;&lt;/span&gt;[macro] (두산백과)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이처럼 매크로를 이용하면, 단순하고 반복적이고 오래 걸리는 지루한 일을, 쉽고 빠르고 편리하게 처리할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 구글에서 검색해보시죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;구글 검색(검색어: 매크로)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;668&quot; height=&quot;493&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bps0I7/btqDHrUsgDX/AkBo3q2R8TSk7kL3qy5hC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bps0I7/btqDHrUsgDX/AkBo3q2R8TSk7kL3qy5hC1/img.png&quot; data-alt=&quot;구글 검색(검색어: 매크로)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bps0I7/btqDHrUsgDX/AkBo3q2R8TSk7kL3qy5hC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbps0I7%2FbtqDHrUsgDX%2FAkBo3q2R8TSk7kL3qy5hC1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;668&quot; height=&quot;493&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;구글 검색(검색어: 매크로)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이 중에서, 첫번째로 나오는 결과물의 링크를 타고 들어가 봅시다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://m.blog.naver.com/PostView.nhn?blogId=crdgcfnxcd&amp;amp;logNo=221636551113&amp;amp;proxyReferer=https:%2F%2Fwww.google.com%2F&quot;&gt;https://m.blog.naver.com/PostView.nhn?blogId=crdgcfnxcd&amp;amp;logNo=221636551113&amp;amp;proxyReferer=https:%2F%2Fwww.google.com%2F&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1587912061658&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;사용쉬운 매크로 프로그램 키매크로(key macro) 다운 및 사용법&quot; data-og-description=&quot;​사용쉬운 매크로 프로그램 키매크로(key macro) 다운 및 사용법​​안녕하세요 해피로그 인사올립니다 : ...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://m.blog.naver.com/PostView.nhn?blogId=crdgcfnxcd&amp;amp;logNo=221636551113&amp;amp;proxyReferer=https:%2F%2Fwww.google.com%2F&quot; data-og-url=&quot;https://blog.naver.com/crdgcfnxcd/221636551113&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nOd0P/hyFNPYIwUR/xVAueEtqC3dMndECHyc9W1/img.jpg?width=743&amp;amp;height=743&amp;amp;face=0_0_743_743&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/PostView.nhn?blogId=crdgcfnxcd&amp;amp;logNo=221636551113&amp;amp;proxyReferer=https:%2F%2Fwww.google.com%2F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://m.blog.naver.com/PostView.nhn?blogId=crdgcfnxcd&amp;amp;logNo=221636551113&amp;amp;proxyReferer=https:%2F%2Fwww.google.com%2F&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nOd0P/hyFNPYIwUR/xVAueEtqC3dMndECHyc9W1/img.jpg?width=743&amp;amp;height=743&amp;amp;face=0_0_743_743');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;사용쉬운 매크로 프로그램 키매크로(key macro) 다운 및 사용법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;​사용쉬운 매크로 프로그램 키매크로(key macro) 다운 및 사용법​​안녕하세요 해피로그 인사올립니다 : ...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기본적으로 키보드의 키를 입력하고, 특정 좌표를 마우스로 클릭하는 등의 기능을 제공하는 것을 볼 수 있습니다. 지연 시간을 둔다거나 반복 작업을 할 수 있게 해주는 기능도 보입니다. 간단한 작업은 이렇게 쉬운 방법으로도 자동화가 가능합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그러나 조건에 따른 복잡한 로직을 구현한다든지, 특정한 이미지를 찾아 클릭하는 등의 보다 다양한 고급 기능을 구현하려면 이러한 간단한 매크로 프로그램으로는 한계가 있습니다. C++ 이나 C# 등의 전문(?) 프로그래밍 언어를 이용한다면 특별한 제약 없이 원하는 기능을 구현할 수 있겠으나, 우리에겐 그것을 배우고 익힐만한 충분한 시간과 의지가 없습니다. 이럴 때 오토핫키(AutoHotkey, AHK)는 소금과 같은 존재가 됩니다. 배우기 쉬우면서도 매우 다양한 기능을 구현할 수가 있죠. 고급 단계에 접어들면 C++ 이나 C# 등의 언어로 된 라이브러리를 불러와 사용할 수도 있기 때문에 사실상 제약이 거의 없다고 볼 수도 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키란 무엇일까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;구글에서 '오토핫키'를 검색하면 첫번째로 나오는 링크를 들어가 봅시다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://namu.wiki/w/AutoHotKey&quot;&gt;https://namu.wiki/w/AutoHotKey&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1587912798234&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;AutoHotKey - 나무위키&quot; data-og-description=&quot;모든 매개변수 사이엔 쉼표가 들어간다. [예시1] 오토핫키라는 이름에 걸맞게 운영체제 단축키 지정에 특화되어 있다. 원하는 대로 키를 변경하고 .exe 파일로 만들면, 해당 바이너리가 백그라운드 프로세스로 올라간 후 실행이 된다. 이 프로그램의 개발 목적 중 하나도 매크로이다. [출처] 쉽게 만든다고 만든 AutoIt 만 해도 BASIC 언어의 형태를 그대로 가지고 있었기 때문에 비프로그래머들에게는 배우기 매우 어려웠던 반면, AHK 는 직관적이고 꼭 필&quot; data-og-host=&quot;namu.wiki&quot; data-og-source-url=&quot;https://namu.wiki/w/AutoHotKey&quot; data-og-url=&quot;https://namu.wiki/w/AutoHotKey&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://namu.wiki/w/AutoHotKey&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://namu.wiki/w/AutoHotKey&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;AutoHotKey - 나무위키&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;모든 매개변수 사이엔 쉼표가 들어간다. [예시1] 오토핫키라는 이름에 걸맞게 운영체제 단축키 지정에 특화되어 있다. 원하는 대로 키를 변경하고 .exe 파일로 만들면, 해당 바이너리가 백그라운드 프로세스로 올라간 후 실행이 된다. 이 프로그램의 개발 목적 중 하나도 매크로이다. [출처] 쉽게 만든다고 만든 AutoIt 만 해도 BASIC 언어의 형태를 그대로 가지고 있었기 때문에 비프로그래머들에게는 배우기 매우 어려웠던 반면, AHK 는 직관적이고 꼭 필&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;namu.wiki&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;몇 가지 주요 내용을 다시 적어보면 다음과 같습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1. 무료&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://namu.wiki/w/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4&quot;&gt;오픈소스&lt;/a&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;기반의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://namu.wiki/w/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%96%B8%EC%96%B4&quot;&gt;스크립트 언어&lt;/a&gt;&lt;span&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2. 오토&lt;b&gt;핫키&lt;/b&gt;라는 이름에 걸맞게 운영체제 단축키 지정에 특화되어 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;3. &lt;b&gt;쉽다.&lt;/b&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;대부분의 명령은 영어만 할 줄 안다면 바로 이게 무슨 역할을 하는지 알아볼수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;4. &lt;span&gt;많은 사람들이 매크로 제작 도구라고 알고있지만, 개발자가 공식 홈페이지에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://namu.wiki/w/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%96%B8%EC%96%B4&quot;&gt;Script Language&lt;/a&gt;&lt;span&gt;라고 직접적으로 적어놓았으므로 스크립트 언어라고 봐야한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오토핫키 가격은 무료라는 점에 주목하세요.&lt;/p&gt;
&lt;p&gt;많이 만들고 많이 사용하고 마음껏 공부하시기 바랍니다.&lt;/p&gt;
&lt;p&gt;돈이 들지 않습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;공식 홈페이지는 다음과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&quot;https://www.autohotkey.com/&quot;&gt;https://www.autohotkey.com/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1587913098549&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;AutoHotkey&quot; data-og-description=&quot;AutoHotkey provides a simple, flexible syntax allowing you to focus more on the task at hand rather than every single little technicality. It supports not only the popular imperative-procedural paradigm, but also object-oriented and command-based programmi&quot; data-og-host=&quot;www.autohotkey.com&quot; data-og-source-url=&quot;https://www.autohotkey.com/&quot; data-og-url=&quot;https://www.autohotkey.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.autohotkey.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.autohotkey.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;AutoHotkey&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;AutoHotkey provides a simple, flexible syntax allowing you to focus more on the task at hand rather than every single little technicality. It supports not only the popular imperative-procedural paradigm, but also object-oriented and command-based programmi&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.autohotkey.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오토핫키</category>
      <author>LN</author>
      <guid isPermaLink="true">https://learningnote.tistory.com/2</guid>
      <comments>https://learningnote.tistory.com/entry/%EB%A7%A4%ED%81%AC%EB%A1%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EA%B3%BC-%EC%98%A4%ED%86%A0%ED%95%AB%ED%82%A4#entry2comment</comments>
      <pubDate>Sun, 26 Apr 2020 23:58:54 +0900</pubDate>
    </item>
  </channel>
</rss>