特定のプログラムのウィンドウでクリップボードからの貼り付けをブロックする必要があります。私はこのように私のプログラムでは、クリップボードビューアを設定します。私がやっている何クリップボードビューアにペースト通知がありません
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'の外側にあります。それはコンパイルさえしますか? –