2010-05-27 5 views
1

Je reçois des images de serveur et des vidéos par flux. Maintenant, je suis l'enregistrer:Quelque chose comme System.Diagnostics.Process.Start pour exécuter un flux

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); 
         } 
        } 

Je peux être jpg, mpg, flv et beaucoup d'autres types multimédia (Avant que je sais ce que je flux est une extension de ce fichier).

Maintenant, je ne veux pas l'enregistrer, mais exécuter directement à partir du flux.

Exemples:

je reçois cours d'eau qui est mybirthay.avi et je l'appelle ma méthode runfile (flux) et je pense que cette méthode devrait fonctionner comme System.Diagnostics.Process.Start (chemin), donc mon flux devrait être ouvert par programme par défaut dans mon SO par exemple allplayer.

Je reçois flux de myfile.jpg et son ouverture par IrfanView,

etc ...

Est-il possible ??

+0

Je pense que vous devez clarifier ce que vous essayez de faire. Que voulez-vous faire avec le flux de fichier du serveur? Et comment est-il lié à 'Process.Start'? –

+0

@ 0xA3 maintenant, je peux exécuter ce jpg par System.Diagnostics.Process.Start (@ "C: \ myFile.jpg") et il est l'ouverture par défaut du programme. – user278618

+1

Vous ne pouvez pas, désolé. – leppie

Répondre

1

Windows met un mur entre les processus afin qu'ils ne puissent pas accéder directement à la mémoire de l'autre sans passer par des fonctions API de débogage privilégiées comme ReadProcessMemory. C'est ce qui maintient le système d'exploitation stable et sécurisé. Mais les sorts meurent pour ce que vous essayez d'accomplir.

Vous devrez utiliser un fichier. Il ne sera pas beaucoup plus lent que l'accès direct à la mémoire, le cache du système de fichiers prend soin de cela.

2

Si vous définissez sur ne pas enregistrer le flux sur le disque, vous pouvez utiliser quelque chose comme le système de fichiers de rappel de Eldos: http://www.eldos.com/cbfs/

Ou, utilisez un disque virtuel, enregistrez votre flux là-bas, et la coquille à cet emplacement du fichier .

Questions connexes