我需要阻止在某個程序的窗口中從剪貼板粘貼。我這樣設置在我的程序剪貼板查看器:剪貼板查看器沒有得到粘貼通知
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'標籤的一半在'switch'之外。這甚至編譯? –