CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

在C#中怎样使用API:PrintWindow

楼主yxred(清深)2006-03-08 12:54:40 在 .NET技术 / C# 提问

我的代码如下:  
  但调试不能通过:  
  新建一个工程,放二个button   一个PictureBox   即可  
   
  [DllImport("user32.dll")]  
  public   static   extern   int   PrintWindow   (    
  IntPtr   hWnd,  
  IntPtr   hdcBlt,  
  int   nFlags);  
   
  private   void   button1_Click(object   sender,   System.EventArgs   e)  
  {  
  try  
  {  
  Bitmap   bitMap   =   new   Bitmap(this.button2.Width,   this.button2.Width);  
  // Graphics   gp   =   bitMap.GetHbitmap  
  Graphics   gp   =   Graphics.FromImage(bitMap);  
  gp.Clear(Color.Red);  
  int   a   =   API.PrintWindow(button2.Handle,   gp.GetHdc(),   0);//注释这一句可通过  
  Console.WriteLine(a.ToString());//总是为零,返回非零才成功执行  
  gp.Dispose();  
  this.pictureBox1.Image   =   bitMap;  
  }  
  catch   (Exception   ex)  
  {  
  Console.WriteLine(ex.Message);  
  }  
  }  
   
   
  代码工程: 问题点数:20、回复次数:10Top

1 楼noky(孤狼傲血)回复于 2006-03-08 13:02:46 得分 2

[DllImport("user32.dll")]  
  public   static   extern   int   PrintWindow   (    
  IntPtr   hWnd,  
  IntPtr   hdcBlt,  
  int   nFlags);  
  ***********************************************************  
  int   a   =   PrintWindow(button2.Handle,   gp.GetHdc(),   0)  
  直接使用就可以了Top

2 楼yxred(清深)回复于 2006-03-08 13:23:08 得分 0

用可以用,编译也能通过,但  
  this.pictureBox1.Image   =   bitMap;//会出现,bitMap正在使用中,请问有谁用过这个API,给点提示,我不是不会用API  
  而是不知道怎样用这个APITop

3 楼yxred(清深)回复于 2006-03-08 13:23:40 得分 0

这个API是不是能把,控件所有图像提取出来??Top

4 楼yxred(清深)回复于 2006-03-08 21:46:04 得分 0

伤心,已经有几个问题,没有在CSDN得到答案了  
  不行,谁解决我加到100分怎样Top

5 楼xujiaoxiang(翱翔)回复于 2006-03-09 12:47:47 得分 3

PrintWindow   函数不在user32.dll中呀,应该是Winspool.dll吧。  
  还有最后那个参数应该是1,不是0吧。Top

6 楼xianbin(悠游浪子)回复于 2006-03-09 13:17:07 得分 5

如果调API出现问题,一般主要是传入的参数不对,请搂住好好检查一下传入的参数的正确性,多试试,估计还是可以用的。Top

7 楼feiyun0112(http://feiyun0112.cnblogs.com/)回复于 2006-03-09 13:54:47 得分 10

hdc=gp.GetHdc();  
  PrintWindow(button2.Handle,   hdc,0);  
  gp.ReleaseHdc(hdc);  
  gp.Flush();  
  this.pictureBox1.Image   =   bitMap;Top

8 楼yxred(清深)回复于 2006-03-10 21:14:26 得分 0

To:feiyun0112(http://feiyun0112.cnblogs.com/)  
   
  不行,你这样虽然通过,并可执行,但没有达到我想要的效果,我要把该窗口截下来。Top

9 楼yxred(清深)回复于 2006-03-10 21:14:54 得分 0

但我不想用bitBlt的方式,因为其中截屏Top

10 楼yxred(清深)回复于 2006-03-11 10:00:13 得分 0

upTop

相关问题

  • c++builder中如何使用api函数?
  • 关于C#使用api的问题!
  • c#中如何使用api SHGetPathFromIDList???急
  • 如何在C#中使用API?
  • .net c#中使用win32 api的问题
  • C# API
  • C语言编程如何使用Windows的API?
  • 新手问题:关于在C++Builder中使用Api函数SetFocus
  • c++ builder中使用API函数遇到的问题
  • 在C#中如何使用API函数:waveOutGetDevCaps

关键词

  • api
  • dll
  • printwindow
  • gp
  • gethdc
  • bitmap
  • intptr
  • 参数
  • picturebox
  • button2

得分解答快速导航

  • 帖主:yxred
  • noky
  • xujiaoxiang
  • xianbin
  • feiyun0112

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo