使用Windos API实现远程屏幕信息获取
来源:互联网 发布:淘宝上能搜到闲鱼 编辑:程序博客网 时间:2024/06/08 02:20
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Runtime.InteropServices; using System.Text; using System.Drawing.Imaging; using System.IO; using System.Management; namespace agentray { /// <summary> /// computers 系统登录信息 /// </summary> public class computers { private Bitmap MyImage = null ; private System.Text.StringBuilder sysinfo; //声明API函数 //Bitmap [ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll " ) ] private static extern bool BitBlt ( IntPtr hdcDest , //目标设备的句柄 int nXDest , // 目标对象的左上角的X坐标 int nYDest , // 目标对象的左上角的X坐标 int nWidth , // 目标对象的矩形的宽度 int nHeight , // 目标对象的矩形的长度 IntPtr hdcSrc , // 源设备的句柄 int nXSrc , // 源对象的左上角的X坐标 int nYSrc , // 源对象的左上角的X坐标 System.Int32 dwRop // 光栅的操作值 ); //显示器的DC [ System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll " ) ] private static extern IntPtr CreateDC ( string lpszDriver , // 驱动名称 string lpszDevice , // 设备名称 string lpszOutput , // 无用,可以设定位 "NULL " IntPtr lpInitData // 任意的打印机数据 ); [StructLayout(LayoutKind.Sequential, Pack=1)] internal struct TokPriv1Luid { public int Count; public long Luid; public int Attr; } //[DllImport( "advapi32.dll " ) ] //internal static extern bool GetUserName(LPTSTR a,LPDWORD b); [DllImport( "kernel32.dll ", ExactSpelling=true) ] internal static extern IntPtr GetCurrentProcess(); [DllImport( "advapi32.dll ", ExactSpelling=true, SetLastError=true) ] internal static extern bool OpenProcessToken( IntPtr h, int acc, ref IntPtr phtok ); [DllImport( "advapi32.dll ", SetLastError=true) ] internal static extern bool LookupPrivilegeValue( string host, string name, ref long pluid ); [DllImport( "advapi32.dll ", ExactSpelling=true, SetLastError=true) ] internal static extern bool AdjustTokenPrivileges( IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen ); public computers() { // // TODO: 在此处添加构造函数逻辑 // } private void capture () { try { IntPtr dc1 = CreateDC ( "DISPLAY " , null , null , ( IntPtr ) null ) ; //创建显示器的DC Graphics g1 = Graphics.FromHdc ( dc1 ) ;//由此Graphic对象产生此位图对象 //由一个指定设备的句柄创建一个新的Graphics对象 MyImage = new Bitmap ( Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , g1 ); //用指定的大小和指定的 Graphics 对象的分辨率初始化 Bitmap 类的新实例。 //根据屏幕大小创建一个与之相同大小的Bitmap对象 Graphics g2 = Graphics.FromImage ( MyImage ) ; //获得屏幕的句柄 IntPtr dc3 = g1.GetHdc ( ) ; //获得位图的句柄 IntPtr dc2 = g2.GetHdc ( ) ; //把当前屏幕捕获到位图对象中 BitBlt( dc2 , 0 , 0 , Screen.PrimaryScreen.Bounds.Width , Screen.PrimaryScreen.Bounds.Height , dc3 , 0 , 0 , 13369376 ) ; //把当前屏幕拷贝到位图中 g1.ReleaseHdc ( dc3 ) ; //释放屏幕句柄 g2.ReleaseHdc ( dc2 ) ; //释放位图句柄 MyImage.Save( "../MyJpeg.jpg " ,ImageFormat.Jpeg) ; } catch(ExternalException ee) { MessageBox.Show(ee.ToString()); } } } } 这个是我调过的。调用capture ()
- 使用Windos API实现远程屏幕信息获取
- windos api
- C#中windos API SendMessage的使用
- android 获取屏幕信息的使用
- windos sdk windows系统信息:获取或设置硬件信息
- 使用WebRTC实现远程屏幕共享
- 使用WebRTC实现远程屏幕共享
- 使用WebRTC实现远程屏幕共享
- 获取屏幕android屏幕信息
- 获取屏幕信息
- javascript获取屏幕信息
- android获取屏幕信息
- js 获取屏幕信息
- Android 获取屏幕信息
- 获取屏幕信息GetDeviceCaps
- Android 获取屏幕信息
- QtQuick获取屏幕信息
- android 获取屏幕信息
- ^^^^^^^^^^^
- 扩展访问控制列表的两个高级选项
- Lucene:基于Java的全文检索引擎简介
- 采样率与频率的关系
- 作維護
- 使用Windos API实现远程屏幕信息获取
- 诺基亚叫板谷歌微软
- DockPanel
- [转]路由器访问控制列表详解
- 商业周刊:诺基亚Symbian免费开放帮了Google
- 时间扩展函数!
- 求关机、重启、注销代码
- 加密 解密VBS 脚本
- SOA在业务与IT两个世界中畅行