Jemand sagte mir, dass wenn Sie auf der Google 3. Seite bei all Ihren Suchanfragen landen, es fast unmöglich ist, aber das sollte sehr einfach sein .
Ich erhalte eine Byte-Array von WCF und ich möchte es in eine TXT-Datei konvertieren. Die Sache ist, dass ich sie mit einem Knopf in WPF öffnen möchte, ohne eine Kopie dieser Datei auf der clientseitigen Festplatte zu schreiben. Wenn es notwendig ist, kann der Benutzer es lokal direkt vom Notizblock speichern.
Alle Dateien sind sehr klein (bis zu 100kb), daher sollte RAM nicht betroffen sein.
Vielen Dank für Ihre Antworten! Ich werde das Ergebnis hier posten, falls jemand es in der Zukunft braucht!
_______________________________________________________________________________
eine neue Klasse erstellen: NotePadHelper (einschließlich System.Runtime.InteropServices;)WPF Erstellen Sie eine TXT-Datei aus einem Byte-Array im Speicher und öffnen Sie es mit dem Editor
public class NotePadHelper
{
[DllImport("user32.dll", EntryPoint = "SetWindowText")]
private static extern int SetWindowText(IntPtr hWnd, string text);
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
public static void ShowMessage(string message = null, string title = null)
{
Process notepad = Process.Start(new ProcessStartInfo("notepad.exe"));
if (notepad != null)
{
notepad.WaitForInputIdle();
if (!string.IsNullOrEmpty(title))
SetWindowText(notepad.MainWindowHandle, title);
if (!string.IsNullOrEmpty(message))
{
IntPtr child = FindWindowEx(notepad.MainWindowHandle, new IntPtr(0), "Edit", null);
SendMessage(child, 0x000C, 0, message);
}
}
}
}
Jetzt müssen Sie auf Zeichenfolge, die die Byte-Array umwandeln und die Doc in Notepad zeigen
var str = System.Text.Encoding.Default.GetString(docObject.Image);
NotePadHelper.ShowMessage(str, docObject.Name);
Danke @keyboardP und @PInvoke!
Versuchen Sie, die PInvoke Antwort mit [hier] (http://stackoverflow.com/a/14295249/187697), ich glaube, das ist, was Sie für – keyboardP
fordern Sie danken. Ich muss daran arbeiten, denn diese Funktion nimmt die Nachricht als String und nicht als Byte-Array. –
Werfen Sie einen Blick auf 'MemoryMappedFile' –