2009-09-12 7 views
0

폼에 하나의 버튼과 하나의 텍스트 상자가 있습니다. 버튼을 클릭하면 Microsoft Word가 시작됩니다. 사용자가 Word를 닫으면 사용자가 자신의 작업을 저장 한 파일 이름을 텍스트 상자에 표시하려고합니다.사용자가 Word를 닫을 때 파일 이름을 가져 오는 방법은 무엇입니까?

나는 button_click에 대해 다음 코드를 사용하고 있습니다 :이 명령 줄을 통해 가능하다 생각하지 않는다

System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files\Microsoft Office\Office12\winword.exe"); 
psi.RedirectStandardOutput = true; 
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
psi.UseShellExecute = false; 

System.Diagnostics.Process listFiles; 
listFiles = System.Diagnostics.Process.Start(psi); 
System.IO.StreamReader myOutput = listFiles.StandardOutput; 

listFiles.WaitForExit(); 

if (listFiles.HasExited) 
{ 
    System.IO.FileInfo ff = new System.IO.FileInfo(myOutput.ToString()); 
    string output = myOutput.ReadToEnd(); 
    this.processResults.Text = output; 
} 

답변

2

. 또한 사용자가 다른 문서를 열면 코드가 완료되지 않을 것입니다. 왜냐하면 모든 문서가 닫힐 때까지 대기하기 때문입니다 (프로세스가 그 시점까지 끝나지 않을 것입니다).

즉, Word/Office Interop 라이브러리를 사용하고 DocumentBeforeSave 및/또는 DocumentBeforeClose 이벤트를 청취 할 수 있어야합니다. 이렇게하면 문서 자체에서 정보를 저장/닫을 때 바로 가져올 수 있습니다.

2

나는 당신이 가지고있는 현재의 코드로 이것을 할 수 있다고 생각하지 않는다. ProcessStartInfo는 매우 일반적이고 단어에 대한 지식이 없습니다.

VSTO (Visual Studio Tools for Office)를 사용하여 단어를 시작하고 싶습니다. 이렇게하면 응용 프로그램 및 문서라는 단어에 대한 참조가 생겨 문서 이름을 가져올 수 있습니다.

이 기사는 시작해야합니다. http://www.c-sharpcorner.com/UploadFile/mgold/WordFromDotNet11082005235506PM/WordFromDotNet.aspx 샘플 코드에는 aDoc이라는 오브젝트가 있습니다. 그런 다음 저장 후 aDoc.FullName을 검사하여 경로를 가져올 수 있습니다.

1

저장된 파일의 이름이 다른 응용 프로그램에 공개되지 않은 내부 정보이기 때문에 가능한지 확실하지 않습니다. MS Word를 사용하고 있으므로 특정 경우에 Word interop을 사용하여 응용 프로그램에서 Word 응용 프로그램을 시작한 다음 해당 이벤트를 처리 할 수 ​​있습니다.

0

원하는 위치에 빈 Word 문서를 만든 다음 Word가로드되도록하십시오. 그?

관련 문제