2010-07-29 2 views
4

사용자가 해당 링크 테이블을 클릭하면 해당 파일에 대한 링크 형식이 포함 된 Windows Form을 만들고 싶습니다. pdf 파일 또는 html 파일)가 열립니다. 그것은 형태로 열리지 않을 것입니다, 그것은 파일이 어도비 리더 또는 다른 프로그램으로 프로그램에서 열림을 의미합니다. 어떻게해야합니까? 는pdf 등의 파일을 여는 방법 "C"의 Windows 양식 앱에서

답변

3

당신은 너무 Process.Start를 사용하여 수행 할 수 있습니다 감사합니다 파일이 포함 리소스가

System.Diagnostics.Process.Start(@"C:\myfolder\document.pdf"); 

경우, 먼저 추출하고 디스크에 저장해야합니다.

string resourceName = "test.pdf"; 
string filename = Path.Combine(Path.GetTempPath(), resourceName); 

Assembly asm = typeof(Program).Assembly; 
using (Stream stream = asm.GetManifestResourceStream(
    asm.GetName().Name + "." + resourceName)) 
{ 
    using (Stream output = new FileStream(filename, 
     FileMode.OpenOrCreate, FileAccess.Write)) 
    { 
     byte[] buffer = new byte[32 * 1024]; 
     int read; 
     while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) 
     { 
      output.Write(buffer, 0, read); 
     } 
    } 
} 
Process.Start(filename); 
5

당신은 (나는 우리를 믿고있어 자원에서이 파일을 추출해야합니다 : 타사 응용 프로그램이 '메모리 프로세스에 액세스 할 수 없습니다 때문에, 직접 스트림에서 문서를 열 수 없습니다 여기서 어셈블리 임베디드 리소스를 말하고 있습니다)를 %temp%으로 설정 한 다음 Process.Start()으로 설정하십시오. 그래도 추출 된 파일의 확장자가 올바른지 확인하십시오.

관련 문제