프린트 스크린을 막아보자..
프린트 스크린은 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);
}