我的想法是编写windows的shell扩展,监视剪贴版,如果程序运行,剪贴版有新的图像.就清除.
只是大体想法,见笑了.

解决方案 »

  1.   

    可以在程序运行时,将PrintScreen按键定义成空事件比如   
     If key={PrintScreen}   //PrintScreen的具体表示法我忘了,可以看帮助
     then Key=#0            //什么都不发生或者直接在该键按下后,执行clear剪贴板:  clipboard.clear
      

  2.   

    这样恐怕不行.如果不是在本窗口按printscreen,那就无法截获按键.如果想通过按键截获的话.
    应该用全局钩子函数监视按键.这样能保证printscreen按键能截获.
      

  3.   

    哈哈!不可能控制的!!别人拿照相机怎么办呢??
    拷屏热键只是最直观的方法,在编程中(大概拷屏软件都是这样做的),直接获取显示的名柄,就能随时拷下屏幕正在显示的内容!!下面代码直接将屏幕内容显示在窗口中!!
    procedure TForm1.Button1Click(Sender: TObject);
    var c:tcanvas;
        dc:Thandle;
    begin
      dc:=getwindowdc(0);  //句柄为0窗口就是屏幕
      c:=tcanvas.create;
      c.Handle:=dc;
      canvas.CopyRect(rect(0,0,clientwidth,clientheight),c,rect(0,0,clientwidth,clientheight));
      releasedc(0,dc);
      c.free;
    end;
      

  4.   

    同意xzisgood(夏),有这样的API函数可以监视剪切版的内容,但是这两个函数我一下子记不起来了。这个方法占用的资源少,但是也不能够放防止其他的拷屏软件进行Copy!只能禁止Windows本身Copy功能。