我需要阻止在某个程序的窗口中从剪贴板粘贴。我这样设置在我的程序剪贴板查看器:剪贴板查看器没有得到粘贴通知
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'之外。这甚至编译? –