在C#中怎样使用API:PrintWindow
我的代码如下:
但调试不能通过:
新建一个工程,放二个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




