Как я могу получить имя файла, когда пользователь закрывает Word? - PullRequest
0 голосов
/ 12 сентября 2009

У меня есть одна кнопка и одно текстовое поле в форме. Когда я нажимаю на кнопку, Microsoft 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;
}

Ответы [ 4 ]

2 голосов
/ 12 сентября 2009

Я не думаю, что вы можете сделать это с имеющимся у вас кодом. ProcessStartInfo очень универсален и не знает слова.

Я думаю, вы захотите использовать Visual Studio Tools для Office (VSTO), чтобы начать Word. Таким образом, у вас есть ссылка на слово application и document и вы можете получить название документа.

эта статья поможет вам начать работу http://www.c -sharpcorner.com / UploadFile / mgold / WordFromDotNet11082005235506PM / WordFromDotNet.aspx в примере кода есть объект, называемый aDoc. Затем после сохранения вы можете проверить aDoc.FullName, чтобы получить путь.

2 голосов
/ 12 сентября 2009

Я не верю, что это возможно через командную строку. Также следует понимать, что если пользователь откроет другой документ, ваш код не будет завершен, поскольку он будет ждать, пока все документы не будут закрыты (процесс не закончится до этой точки).

При этом вы должны иметь возможность использовать библиотеки взаимодействия Word / Office и прослушивать события DocumentBeforeSave и / или DocumentBeforeClose . Это должно позволить вам извлекать информацию из самого документа, в момент его сохранения / закрытия.

1 голос
/ 12 сентября 2009

Я не уверен, возможно ли это или нет, потому что имя сохраненного файла является внутренней информацией, не доступной для других приложений. Вместо этого в вашем конкретном случае, так как вы используете MS Word, вы можете использовать Word Interop для запуска приложения Word в вашем приложении и затем обрабатывать его события

0 голосов
/ 06 января 2012

Создать пустой документ Word в нужном месте, а затем заставить Word загрузить его?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...