vb.net中如何拷贝屏幕?

zxh168 2006-12-08 04:05:20
亦即实现 printscreen键的功能?


谢谢!
...全文
303 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicochang 2006-12-09
  • 打赏
  • 举报
回复
直接调用当然是不行了

Bitmap bmp = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
Graphics gs = Graphics.FromImage(bmp);
gs.CopyFromScreen(10, 10, 100, 100, new Size(90,90));
bmp.Save(@"c:\1.bmp");

类似这样调用
zxh168 2006-12-09
  • 打赏
  • 举报
回复
谢谢

我用vs2005 好象也没找到Graphics.CopyFromScreen

???

谢谢诸位!
zmaini1420 2006-12-09
  • 打赏
  • 举报
回复
不错帮顶一下
nicochang 2006-12-09
  • 打赏
  • 举报
回复
这段C#代码,如果,不好转成VB的话,可以用C#编译,单独成为一个DLL,用VB调用
nicochang 2006-12-09
  • 打赏
  • 举报
回复
对不起,不好意思,忘贴了一段API调用
struct GetDeviceCapsIndex
{
public static readonly int DRIVERVERSION = 0;
public static readonly int HORZSIZE = 4;
public static readonly int VERTSIZE = 6;
public static readonly int HORZRES = 8;
public static readonly int VERTRES = 10;

}

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct LUID
{
public uint LowPart;
public uint HighPart;
}

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct TOKEN_PRIVILEGES
{
public uint PrivilegeCount;
public LUID Luid;
public uint Attributes;
}

public class Win32API
{
[DllImport("Advapi32", CharSet=CharSet.Auto)]
public static extern bool LookupPrivilegeValue (string sysname,string privname,ref LUID luid);

[DllImport("advapi32", CharSet=CharSet.Auto)]
public static extern bool AdjustTokenPrivileges(IntPtr handle, bool dsall,ref TOKEN_PRIVILEGES newstate,int len, IntPtr oldstate,IntPtr retlen);

[DllImport("kernel32.dll")] 
public static extern int GetLastError(); 

[DllImport("user32.dll")]
public static extern bool ExitWindowsEx(int uFlags, int dwReason); 
[DllImport("gdi32.dll")]
public static extern IntPtr CreateDC(
string lpszDriver, // driver name
string lpszDevice, // device name
string lpszOutput, // not used; should be NULL
Int64 lpInitData // optional printer data
);

[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleDC(
IntPtr hdc // handle to DC
);

[DllImport("gdi32.dll")]
public static extern int GetDeviceCaps(
IntPtr hdc, // handle to DC
int nIndex // index of capability
);

[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleBitmap(
IntPtr hdc, // handle to DC
int nWidth, // width of bitmap, in pixels
int nHeight // height of bitmap, in pixels
);

[DllImport("gdi32.dll")]
public static extern IntPtr SelectObject(
IntPtr hdc, // handle to DC
IntPtr hgdiobj // handle to object
);

[DllImport("gdi32.dll")]
public static extern int BitBlt(
IntPtr hdcDest, // handle to destination DC
int nXDest, // x-coord of destination upper-left corner
int nYDest, // y-coord of destination upper-left corner
int nWidth, // width of destination rectangle
int nHeight, // height of destination rectangle
IntPtr hdcSrc, // handle to source DC
int nXSrc, // x-coordinate of source upper-left corner
int nYSrc, // y-coordinate of source upper-left corner
UInt32 dwRop // raster operation code
);

[DllImport("gdi32.dll")]
public static extern int DeleteDC(
IntPtr hdc // handle to DC
);

}
public class GDI
{
public static Bitmap GetScreen()
{
IntPtr hscrdc,hmemdc;
IntPtr hbitmap,holdbitmap;
int nx,ny,nx2,ny2;
nx=ny=nx2=ny2=0;
int nwidth, nheight;
int xscrn, yscrn;
hscrdc = Win32API.CreateDC("DISPLAY", null, null, 0);//创建DC句柄
hmemdc = Win32API.CreateCompatibleDC(hscrdc);//创建一个内存DC
xscrn = Win32API.GetDeviceCaps(hscrdc, GetDeviceCapsIndex.HORZRES);//获取屏幕宽度
yscrn = Win32API.GetDeviceCaps(hscrdc, GetDeviceCapsIndex.VERTRES);//获取屏幕高度
nx = 0;
ny = 0;
nx2 = xscrn;
ny2 = yscrn;

nwidth = nx2 - nx;//截取范围的宽度
nheight = ny2 - ny;//截取范围的高度
hbitmap = Win32API.CreateCompatibleBitmap(hscrdc, nwidth, nheight);//从内存DC复制到hbitmap句柄
holdbitmap = Win32API.SelectObject(hmemdc, hbitmap);
Win32API.BitBlt(hmemdc, 0, 0, nwidth, nheight,hscrdc, nx, ny,(UInt32)0xcc0020);
hbitmap = Win32API.SelectObject(hmemdc, holdbitmap);
Win32API.DeleteDC(hscrdc);//删除用过的对象
Win32API.DeleteDC(hmemdc);//删除用过的对象
return Bitmap.FromHbitmap(hbitmap);//用Bitmap.FromHbitmap从hbitmap返回Bitmap
}

}
zxh168 2006-12-09
  • 打赏
  • 举报
回复
谢谢!

领教各位高招了!

十分感激,马上给分!
KahnWinsock 2006-12-08
  • 打赏
  • 举报
回复
To zxh168()

如果你用的是2005,.NET Framework 2.0 版中是新增了Graphics.CopyFromScreen 方法。
试试看。
KahnWinsock 2006-12-08
  • 打赏
  • 举报
回复
To zxh168()

2003 or 2005
zxh168 2006-12-08
  • 打赏
  • 举报
回复
VB里面怎么没有?


DX请再出招,谢谢!
tioncai 2006-12-08
  • 打赏
  • 举报
回复
很不错,收藏
顺便问一下。可以实现象QQ抓图软件的功能吗?
nicochang 2006-12-08
  • 打赏
  • 举报
回复
给一段C#写的,应该不难看懂
public virtual void OnGetScreen()
{
Bitmap bmp = GDI.GetScreen();
Sender sender = new Sender();
MemoryStream mem = new MemoryStream();
bmp.Save(mem , System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Dispose();
byte[] pic;
pic = mem.GetBuffer();
mem.Close();
sender.Send(pic);
}
zxh168 2006-12-08
  • 打赏
  • 举报
回复
希望问题不是太难,也希望DX能支招!
辅助软件 aspx/asp代码生成器 语言规范 C# Language Specification 1.2(C#语言规范1.2).doc C# Language Specification 2.0(C#语言规范2.0).doc 源码教程 ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_运算符重载.htm.txt 10_阴影和深度复制.htm.txt 11_事件基础.htm.txt 12_事件进阶.htm.txt 13_读写Txt文件.htm.txt 14_StatusBar控件.htm.txt 15_自定义控件.htm.txt 16_使用打开保存文件对话框.htm.txt 17_图形绘制基础.htm.txt 18_图形绘制进阶-线条、字体.htm.txt 19_图形绘制进阶-图像(双倍缓冲).htm.txt 20_Windows应用程序安装部署概念.htm.txt 21_使用文件基础.htm.txt 22_使用文件高级.htm.txt 23_串行化和并行化.htm.txt 技术资料 ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存过程等的解密.txt VisualC#打造“浏览器”.txt vs2005常用快捷键.txt webcontrol和pagelet.txt win2003配置msdtc.txt word导出.txt 保证应用程序只有一个实例运行.txt 编辑字段的word文件.txt 编码标准.txt 播放声音.txt 捕捉DataGrid的双击事件(C#版本).txt 不显示窗口后台运行程序.txt 储存过程.txt 处理“进程性能计数器被禁用”的错误.txt 串口操作.txt 打开word文件.txt 打造“浏览器”.txt 带图标和自定义颜色的ListBox.txt 得到当前数据库所有用户表信息.txt 读取、设置系统时间日期.txt 读写注册表.txt 对过程进行加密.txt 二进制数据保存.txt 二进制数据字段的更新.txt 分页及动态创建列的控件 .txt 改变Windows服务的启动顺序.txt 各进制之间的转换.txt 给图片添加版权信息.txt 关于拖放操作.txt 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法.txt 画带阴影效果的文字.txt 环境信息.txt 获得光标在多行textbox的行与列的函数.txt 计算控件文字所占的宽度.txt 加半透明图片水印.txt 将控件放到datagrid以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET建立一个平滑的进度条.txt 如何得到网卡号.txt 如何调用WindowsAPI的要点.txt 如何控制输入法.txt 如何利用GDI作图解决异或问题.txt 如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别键盘左右的shift,Ctrl或Alt键.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在Excel生成图表?.txt 如何用程序实现键盘和鼠标的模拟?.txt 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本.txt 使用Win32和其他库.txt 使用自己画的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案一个项目的xml注释在另一个项目不能智能提示显示这些注释的解决方法.txt 图像读取.txt 无标题窗口的拖放.txt 下面的5行代码完成了从局域网找出所有的机器.txt 显示DataGrid序号的一个适用的方法.txt 用C#快速往Excel写数据.txt 用C#来捕获屏幕.txt 用C#做ScreenSaver.txt 用imgscan.ocx来扫描图像.txt 用word填充表格.txt 用户登录组合控件.txt 在.NET得到计算机硬件信息的一些功能.txt 在MapX响应滚轮放大缩小地图.txt 在两个ASP.NET页面之间传递值.txt 在如何利用SharpZipLib进行文件的压缩和解压缩.txt 怎样打开关闭CDROM.txt 怎样检测网络的电脑是否有安装SQL2000.txt 怎样写一个存储过程类来实现如何对存储过程的调用?.txt 直接拉入图片文件到程序窗口打开.txt 指定Web服务器运行的不是ASP.NET1.1版.txt 字符串加密.txt 字幕显示屏幕保护.txt 自己动手用c#写控件.txt C#试题 简答题.txt 填空题.txt 问答题1.txt 问答题2.txt 选择题.txt 综合题.txt
1,misuite5.EXE Pegasus出品的图像控件,包含FxTools Gold V5.0(动态图像效果)和SuiteFace V2.0(多媒体制作),效果惊人(9,177KB)2,b003.ZIP 一个小巧的显示GIF动画的控件(24KB)3,b002.ZIP 功能十分强大的一个图像处理控件,可以打印、转换图像格式并有多种处理效果。(包括示例程序)(26KB)4,crystal.zip一个图形创建和处理控件, 它支持bmp, cur, dib, emf, gif, ico, jpg和wmf文件格式, 能装入, 存储, 画, 处理和打印图形. 有多种处理效果. (free) cool(48KB)5,gvocx.zip专业级别的vb下面读写图形文件的控件, 能支持art,bmp,cut,dib,emp,gem,gif,hrz,iff,img,png,jpg,lbm,mac,msp,pcx,ras,rle,tga,tif,wmf,wpg等文件格式(258KB)6,transimg.zip实现透明图形的控件(132KB)7,graphic.zip创建活泼图形的控件(free), 主页地址:http://www.geocities.com/siliconvalley/bay/8064/mads/mads.html(50KB)8,arbackgrctrl.zip建立windows墙纸方式的背景图形(31KB)9,gtimage.v1.4.zip一个扩展的picturebox控件(215KB)10,browser.zip支持bmp, jpeg, gif, ico和wmf格式的图片浏览控件(free), 主页地址http://www.planete.net/~lucash/activex/index.htm(181KB)11,anigif.zip使程序可以使用Gif动画,而不是静态的图片(425KB)12,iconpicker.zip在应用程序增加icon浏览界面的控件(28KB)13,b001.ZIP 透明图片控件(133KB) 14,card.ZIP Dll文件可以画出54张牌面和六种牌背,想做扑克牌游戏的朋友千万别错过(52KB)15,dd.zip 压缩位图图象并且保存到 JPG 格式(77KB)16,ccrpani.zip CCRP Animation Control V1.0 (101KB)17,bw6mp22s.zip BW MP3 OCX V2.02(554KB)18,PicOpener.zip PicOpener V2.0可以显示50多图片格式(113KB)19,vbanigif.zip 显示gif动画的控件(12KB)20,scrprint.zip 屏幕拷贝程序(有例程) (320KB)21,gif.zip 能在Vb显示动画(*.gif)的控件(39KB)22,gif89.zip 同样能显示动画的控件与gif.ocx相比,它可以接受任意大小的gif图片,只是需要编写的代码要多一些只能说个有千秋,自己选吧 (6KB)23,xpress40.exe Pegasus出品的图像控件,其包含了多个控件,从图像的捕捉到显示、打印应有尽有,共支持70多种图像格式。(3611KB)24,adsvcap.zip这是一款用于VB 5.0 和 6.0的视频捕获控制器。用户可以在任何视频捕获设备上随意捕捉图象,也可以把表格或是图片转换成BMP格式(58KB) 25,picture.zip图形创建和处理控件(59KB)

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧