3

C# で名前付きパイプを作成しました。

サーバ

using (NamedPipeServerStream pipeServer = new NamedPipeServerStream("testpipe", PipeDirection.Out))
        {
            Console.WriteLine("NamedPipeServerStream object created.");
            Console.Write("Waiting for client connection...");
            pipeServer.WaitForConnection();
            Console.WriteLine("Client connected.");
            try
            {
                using (BinaryWriter sw = new BinaryWriter(pipeServer))
                {
                    sw.AutoFlush = true;
                    Console.Write("Enter text: ");
                    byte[] bytes = File.ReadAllBytes(@"C:\\Temp\test.png");
                    sw.Write(bytes);
                }
            }
            catch (IOException e)
            {
                Console.WriteLine("ERROR: {0}", e.Message);
            }
        }

クライアント

using (NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "testpipe", PipeDirection.In))
        {
        Console.Write("Attempting to connect to pipe...");
        pipeClient.Connect();
        Console.WriteLine("Connected to pipe.");
        Console.WriteLine("There are currently {0} pipe server instances open.", pipeClient.NumberOfServerInstances);
        using (BinaryReader sr = new BinaryReader(pipeClient))
        {
            byte[] list;
            list = sr.ReadBytes(214);
        }
    }
    Console.Write("Press Enter to continue...");
    Console.ReadLine();
}

このパイプにはファイルが存在します。ディスクに保存せずにブラウザー (IE) で開くにはどうすればよいですか? ファイルが NT オブジェクトであることはわかっていますが、どのように開くのですか?

4

1 に答える 1

2

画像がパラメータとして渡されるのに十分小さい(〜32K base64エンコード)場合(!)、IE8以降(または他のブラウザ)で問題がない場合は、次の方法を試すことができます。

string base64String = Convert.ToBase64String(bytes);

SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer();
object Empty = 0;
object URL = "about:blank";
IE.Visible = true;
IE.Navigate2(ref URL, ref Empty, ref Empty, ref Empty, ref Empty);
IHTMLDocument2 hTMLDocument = (mshtml.IHTMLDocument2)IE.Document;
HTMLWindow2 iHtmlWindow2 = (HTMLWindow2) hTMLDocument.Script ;
iHtmlWindow2.execScript("document.write(\"<img src=\\\"data:image/png;base64," + base64String + "\\\">\")", "javascript");

私が何か他のことを考えたら、私はあなたに知らせます:)

于 2012-12-27T13:50:09.220 に答える