블로그 이미지
랜달프

calendar

1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Notice


    프린트 스크린을 막아보자..
    프린트 스크린은 WM_KEYDOWN이나 다른 이벤트가 떨어지지 않는다..
    단지.. WM_KEYUP이벤트가 발생할 때 VK_SNAPSHOT키로 값이 넘어온다..
    프린트 스크린 키를 눌렀다면 이미 클립보드에 이미지가 들어간 것이다..
    그렇기 때문에 프린트 스크린이 눌리게 되면 키 이벤트를 잡아내고 그 시점에서 클립보드를 지워버리면 된다..

    BOOL CKET_TopFrameDlg::PreTranslateMessage(MSG* pMsg)
    {
     //이렇게는 안된다..왜냐면 이미 KEYDOWN에서 클립보드에 복사가 되었기때문에..
     //if (pMsg->message == WM_KEYUP && pMsg->wParam == VK_SNAPSHOT)
     // return TRUE;


     //  1.  프린트 스크린 키 이벤트를 잡아내고 그 시점에 클립보드를 지워버린다..
     //  print screen, ctrl+print screen은 막기..
     if (pMsg->message == WM_KEYUP && pMsg->wParam == VK_SNAPSHOT)
     {
         ::OpenClipboard(NULL);
         ::EmptyClipboard();
         ::CloseClipboard();
     }
     //  2.  alt+print+screen 막기..
     if (GetKeyState(VK_MENU)&& pMsg->wParam == VK_SNAPSHOT)
     {
         ::OpenClipboard(NULL);
         ::EmptyClipboard();
         ::CloseClipboard();
     }

     return CDialog::PreTranslateMessage(pMsg);
    }

    posted by 랜달프