避免我的应用程序使用printscreen捕获

时间:2013-11-14 19:27:49

标签: c# c++ c windows

正如标题所示,我需要创建一个无法使用打印屏幕捕获的Windows应用程序。

应用程序将在我的计算机上运行,​​它将显示在我的屏幕上。没有互联网参与。

这可以用C ++做到吗?或任何其他语言??

谢谢。

2 个答案:

答案 0 :(得分:2)

据我所知,有两种方法可以实现它:

  1. 当您的应用程序是具有焦点的窗口时,不允许打印屏幕 - 这是相当
  2. 简单:您需要修改窗口过程以捕获WM_HOTKEY,并且无法将其传递回系统:

    case WM_HOTKEY:
    /* your code */;
    break; // no DefWndProc() call
    
    1. 当您的应用运行时,根本不允许打印屏幕。您必须设置一个挂钩,它会将所有消息,甚至那些窗外指向您的程序。准确的信息可以在这里找到:http://www.cubert.net/2008/05/sntt-disable-print-screen-key-win32-api.html
    2. 您还可以让用户制作打印屏幕,但在检测到打印屏幕时会使窗口空白。为此,请在片段中:

      case WM_HOTKEY: 
      /* here you blank your window */;
      DefWndProc(); // send the message about print screen back to the system.
      break;
      

      当然这一切都取决于您使用的API,但假设您使用裸WinAPI - 这就是您的方式。

答案 1 :(得分:1)

你最多可以做到这种“有点”。您可以捕获Windows打印屏幕事件而不执行任何操作,但第三方打印屏幕不依赖于这些。一个漂亮的高分辨率数码相机甚至更难“编码”