NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    디자이너 디자이너의 Play Button과 Stop Button에 단축키 설정하기.

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 요즘 날씨가 너무 좋네요^^? 코로나19로 모두가 힘든 시기를 보내고 있지만, 짜증내지 말고 좀 더 서로를 배려하면서 극복해봅시다~ 요즘 마스크 빌런에 대한 뉴스를 접하다보면 씁쓸하기까지 합니다. 다시 본론으로 돌아가서~ 단축키 설정하는 방법에 대해 알아보도록 하겠습니다. 디자이너를 이용해서 플레이어를 제작하는 경우 스크립트 실행과 중지 버튼에 단축키를 설정할 수 있습니다. 전체 소스는 첨부파일로 다운 받으세요.

    8XkGf2y.gif

     

     

    1. 로컬 단축키 설정하기.

    우선, 아래 그림처럼 속성에서 단축키를 설정해주세요.

    1. PlayButton 선택
    2. 속성탭 선택 (Alt+Enter)
    3. 단축키 설정

    vlqtUD8.png

     

     

    F7을 눌러서 코드 보기로 이동하세요. 아래 그림처럼 디자이너에서 우클릭 후 코드 보기를 클릭해도 됩니다.

    mupuel3.png

     

     

    아래 코드를 전부 복사한 후 붙여넣기 해줍니다. 참고로, playButton1과 stopButton1은 자동으로 만들어주는 컨트롤 이름입니다. 만약, 컨트롤의 이름을 임의로 변경했다면 아래 코드에서 관련된 이름들을 모두 변경해줘야 합니다. 이름을 변경하는 방법은 디자인 보기(Shift+F7)에서 속성창(Alt+Enter)의 (Name)에서 할 수 있습니다.

            protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if (playButton1.ButtonShortcut != Keys.None)
                {
                    KeyEventArgs e = new KeyEventArgs(keyData);
    
                    if ((e.KeyCode | e.Modifiers) == playButton1.ButtonShortcut)
                    {
                        playButton1.PerformClick();
                        return true;
                    }
                }
                if (stopButton1.ButtonShortcut != Keys.None)
                {
                    KeyEventArgs e = new KeyEventArgs(keyData);
    
                    if ((e.KeyCode | e.Modifiers) == stopButton1.ButtonShortcut)
                    {
                        stopButton1.PerformClick();
                        return true;
                    }
                }
                return base.ProcessCmdKey(ref msg, keyData);
            }

     

     

    2. 글로벌 단축키 설정하기.

    앞서 알아본 내용은 로컬 단축키 설정 방법입니다. 로컬과 글로벌의 차이점은 단순하지만, 사용자 입장에서 보면 아주 크게 느껴질 수 있는 부분입니다. 로컬은 디자이너가 활성화된 상태에서만 단축키가 동작합니다. 따라서, 다른 프로그램이 앞에 있거나 활성 상태라면 단축키를 이용해서 스크립트를 실행하거나 중지할 수 없습니다. 글로벌은 이와 반대로 어떠한 상태에서도 단축키가 동작합니다. 물론, 이미 다른 프로그램이 글로벌 단축키를 사용하고 있다면 문제가 되겠죠^^;

    sQBVsOt.gif

     

     

    글로벌 단축키를 설정하는 방법은 여러가지가 있습니다. 직접 인터넷에서 소스 코드를 복사+붙여넣기로 직접 구현해도 됩니다. 하지만, 엔지엠은 이미 검증된 안전한 모델을 제공하고 있습니다. 가능하면 검증된 안전한 방식을 사용하는게 정신 건강에 좋습니다. 아래와 같이 코드를 추가해줍니다. 29라인에서 훅매니저를 이용해서 키다운 이벤트 처리기를 추가해주세요. 탭을 두번 누르면 자동으로 처리기가 추가됩니다.

    LkPLOxx.png

     

     

    위 37~40라인을 아래와 같이 수정하세요.

            private void HookManager_KeyDown(object sender, KeyEventArgs e)
            {
                if (playButton1.ButtonShortcut != Keys.None)
                {
                    if ((e.KeyCode | e.Modifiers) == playButton1.ButtonShortcut)
                    {
                        playButton1.PerformClick();
                        e.Handled = true;
                    }
                }
                if (stopButton1.ButtonShortcut != Keys.None)
                {
                    if ((e.KeyCode | e.Modifiers) == stopButton1.ButtonShortcut)
                    {
                        stopButton1.PerformClick();
                        e.Handled = true;
                    }
                }
            }

     

     

    두가지 방식을 테스트 해보면 어떤 차이점이 있는지 금방 알 수 있을겁니다^^

    혹시라도 문제가 있다면 커뮤니티의 질문과 답변 게시판을 이용해주세요~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    첨부파일

    댓글목록

    profile_image

    파트님의 댓글

    no_profile 파트 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일 Date

    디자이너 정보가 부족해서 공부하기 힘들었는데
    꾸준한 업데이트 감사합니다~