특정 프로그램의 창에서 클립 보드에서 붙여 넣기를 차단해야합니다.클립 보드 뷰어에서 붙여 넣기 알림을받지 못합니다.
HWND hwndNextViewer = 0;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_CREATE: {
hwndNextViewer = SetClipboardViewer(hWnd);
break;
}
default:
return DefWindowProcW(hWnd, message, wParam, lParam);
}
case WM_DRAWCLIPBOARD: {
if(GetForegroundWindow() == hWndTarget){
OpenClipboard(hWndTarget);
EmptyClipboard();
CloseClipboard();
}
SendMessage(hwndNextViewer, message, wParam, lParam);
break;
}
case WM_CHANGECBCHAIN:{
if ((HWND)wParam == hwndNextViewer)
hwndNextViewer = (HWND)lParam;
else if (hwndNextViewer != NULL) {
SendMessage(hwndNextViewer, message, wParam, lParam);
}
break;
}
}
}
내가 일을하고있어 현재 전경 창이 대상 프로그램 윈도우의 경우 내가 확인하고있어이며,이 경우, 나는 클립 보드의 내용을 지울 :이처럼 내 프로그램에서 클립 보드 뷰어를 설정합니다. 그러나이 코드는 붙여 넣기를 감지하지 못합니다. 예를 들어 마우스를 사용하여 대상 창 내부에 붙여 넣을 때
붙여 넣기를 어떻게 감지합니까?
'case' 레이블의 절반은 '스위치'밖에 있습니다. 그것은 심지어 컴파일합니까? –