我从流中获取服务器图像和视频。 现在我正在保存它:
Stream str = client.GetFile(path);
using (var outStream = new FileStream(@"c:\myFile.jpg", FileMode.Create))
{
var buffer = new byte[4096];
int count;
while ((count = str.Read(buffer, 0, buffer.Length)) > 0)
{
outStream.Write(buffer, 0, count);
}
}
我可以是jpg,mpg,flv和许多其他多媒体类型(在我获得流之前我知道这个文件的扩展名是什么)。
现在我想不保存它,但是从流直接运行。
示例:
我得到的是mybirthay.avi的流,我调用了我的方法RunFile(stream),我认为这个方法应该像System.Diagnostics.Process.Start(path)一样工作,所以我的流应该在我的默认程序中打开例如,所有玩家。
我从myfile.jpg获取流,并由irfanview打开,
等...
有可能吗?
答案 0 :(得分:2)
如果您设置为不将流保存到磁盘,则可以使用Eldos的回调文件系统:http://www.eldos.com/cbfs/
或者,使用ramdisk,将流保存在那里,然后shell到该文件位置。
答案 1 :(得分:1)
Windows在进程之间设置了一道墙,因此它们无法直接访问彼此的内存,而无需通过类似ReadProcessMemory的特权类调试API函数。这是保持操作系统稳定和安全的原因。但是对于你想要完成的事情来说,法术已经毁灭了。
您需要使用文件。它不会比直接内存访问慢得多,文件系统缓存会解决这个问题。