这个问题在C++上看到过很多人回答这个问题,但是DELPHI上我实现不出, 一直在心里是个疙瘩。流程为程序最小化后,在内存中中创建一个兼容的HDC 在重绘他 在进行截图。最后释放 现在正好用到了, 请高手们指点下巴  ,给出源码 分数送上

解决方案 »

  1.   

    不太清楚你是要重绘还是要转换在onpaint事件中重绘
      

  2.   

    是这样的 举例来说 
    1.我运行传奇运行后 在程序中把界面最小化  现在我利用程序发送一个最大化的指令 先在内存中创建一个兼容的HDC 然后让游戏吧界面重绘到这个HDC中在对界面截图 
    2.我运行传奇运行后 在程序中把界面最小化  现在我利用程序发送一个最大化的指令 用钩子拦截图形坐标 重绘到内存中 在重建一个HDC 去复制截图 
    主要是用于一些程序的后台截图
    c++ 上写的很清楚 但是DELPHI 没有资料
      

  3.   

    后台截图使用printWindow函数,2000以上的系统支持
    另外,楼主既然有C++的资料,那你自己换成Delphi的就可以了吗!
      

  4.   

    printWindow函数 是要激活窗口后的 C++的资料转DELPHI 我不会C++ 
      

  5.   

    printWindow可以截取吧,只要不是hide的。无所谓激活不激活
      

  6.   

    printWindow可以截取 会被遮盖
      

  7.   

    楼主想屏幕截图吧,代码如下:
    var
      B: TBitmap;
    begin
      B := TBitmap.Create;
      B.Width := GetSystemMetrics(SM_CXSCREEN);    //Screen.Width
      B.Height := GetSystemMetrics(SM_CYSCREEN);   //Screen.Height
      BitBlt(B.Canvas.handle, 0, 0, B.Width, B.Height, GetDc(0), 0, 0, SRCCOPY);  with TJPEGImage.Create do
      begin
        Assign(B);
        CompressionQuality := 75;
        SaveToFile(MyFilename);
        free;
      end;
    end;
      

  8.   

    自己解决了 用HOOK 虽然和我想的不一样但还是解决 呵呵