Как следует из названия, мне нужно создать приложение Windows, которое невозможно захватить с помощью экрана печати.
Приложение будет работать на моем компьютере, и оно будет показано на моем экране. Нет интернет-участия.
Можно ли это сделать в C++? или любой другой язык?
Спасибо.
Насколько мне известно, есть два способа добиться этого:
легко: вам нужно изменить свою оконную процедуру, чтобы поймать WM_HOTKEY
и вы не можете передать ее обратно в систему:
case WM_HOTKEY:
/* your code */;
break; // no DefWndProc() call
Вы также можете позволить своему пользователю создавать экраны печати, но закройте окно, когда обнаружен экран печати. Для этого в фрагменте:
case WM_HOTKEY:
/* here you blank your window */;
DefWndProc(); // send the message about print screen back to the system.
break;
Конечно, все зависит от используемого вами API, но предполагая, что вы используете голый WinAPI - так вы это делаете.
ShowWindow(hwnd, SW_HIDE)
, но вы все равно можете попытаться получить контент, получив DeviceContext и т. Д.). Но когда дело доходит до отключения «захвата с помощью экрана печати», тогда в моих книгах экран печати - это клавиша sys, и вопрос в основном заключается в простом нажатии этой клавиши.
В лучшем случае вы можете сделать это "отчасти". Вы можете захватить события экрана печати Windows и ничего не делать, но сторонний экран печати не зависит от них. Хорошая цифровая камера с высоким разрешением еще сложнее "кодировать",