日期:2014-05-18  浏览次数:20978 次

!!!c# 如何获取共享内存图片!!!
网上搜了搜知道要调用windows的api,如下
 [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]  
  public static extern IntPtr OpenFileMapping(int dwDesiredAccess, bool bInheritHandle, string lpName);


  [DllImport("kernel32.dll")]
  public static extern IntPtr MapViewOfFile(IntPtr hFileMappingObject, uint
  dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow, IntPtr dwNumberOfBytesToMap);

可是MapViewOfFile函数返回的是一个IntPtr 类型数据,请问如何把它变成图片文件啊

谢谢大家!!



------解决方案--------------------
IntPtr 是不能转换成图片的,这个是一个窗口的句柄,剪切板中的图片倒是可以用自带方法直接获取。
------解决方案--------------------
可以参考 http://blog.csdn.net/gaozhigang/article/details/5622319
------解决方案--------------------
.net 4.0里增加了对memory mapped file的支持,不用再调windows api了:

using System.IO.MemoryMappedFiles;

MemoryMappedFile file = MemoryMappedFile.OpenExisting("mapname");
MemoryMappedFileViewStream stream = file.CreateViewStream();

拿到了stream,读写应该不成问题