Я пишу некоторый код для добавления файловых вложений в приложение, которое я создаю.
Я имею, добавляют и Удаляют работу, но я не знаю, где начать реализовывать открытый.
У меня есть массив байтов (из поля таблицы), и я не знаю, как заставить его автоматически открыться, например.
Если у меня есть массив байтов, который является PDF, как я заставляю свое приложение автоматически открывать Acrobat или независимо от того, что в настоящее время присваиваемое приложение для расширения использует C#?
По порядку чтобы открыть его в любом внешнем приложении, вам нужно записать байты на диск, а затем использовать Process.Start для запуска связанного приложения во временном файле. Просто передайте временное имя файла (с соответствующим расширением) в качестве единственного аргумента Process.Start, и он откроет этот файл в соответствующем приложении.
Некоторые приложения могут иметь способ передать поток байтов, но это должно быть явно обработано целевым приложением.
В качестве примера кода вы можете сделать что-то вроде:
byte[] filedata = GetMyByteArray();
string extension = GetTheExtension(); // "pdf", etc
string filename =System.IO.Path.GetTempFileName() + "." + extension; // Makes something like "C:\Temp\blah.tmp.pdf"
File.WriteAllBytes(filename, filedata);
var process = Process.Start(filename);
// Clean up our temporary file...
process.Exited += (s,e) => System.IO.File.Delete(filename);
Это может немного помочь
byte[] bytes = File.ReadAllBytes(@"C:\temp\file.pdf");
string outpath = @"c:\temp\openme.pdf";
File.WriteAllBytes(outpath, bytes);
Process.Start(outpath);
Просто записывает байт [] в disk, а затем запускает его со связанным приложением.
// get the PDF in byte form from the system
var bytes = GetFileBytes("Some identifier");
// get a valid temporary file name and change the extension to PDF
var tempFileName = Path.ChangeExtension(Path.GetTempFileName(), "PDF");
// write the bytes of the PDF to the temp file
File.WriteAllBytes(tempFileName, bytes);
// Ask the system to handle opening of this file
Process.Start(tempFileName);
Запишите данные во временный файл и откройте его с помощью Process. Это будет использовать стандартную программу, настроенную для данного типа файла. (например, txt> notepad)
byte[] b = new byte[]{0x0};
var fileName = "c:\\test.txt";
System.IO.File.WriteAllBytes(fileName, b);
System.Diagnostics.Process.Start(fileName);