Вопрос по c#, vb.net – В VB.NET проверьте наличие изменений в файле, запущенном с помощью process.start ()

0

Я разрабатываю приложение на основе vbnet / c # .NET, которое открывает файлы с различными приложениями (Excel, Word и т. Д.).

Приложение запускается с помощьюDim app As Process = Process.Start(ProcessProperties)

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

Как я могу справиться с этим? И если это возможно, как я могу запустить собственное приглашение приложения для сохранения?

Благодарност

Ваш Ответ

3   ответа
4

Для использования в офисных приложениях Office Interop Ассамбл, неProcess.Start чтобы начать и контролировать их. Вот пример кода для Excel (в VB.NET). Вы должны добавитьMicrosoft.Office.Interop.Excel.dll ссылки на проект, чтобы это работало.

   oExcel = New Microsof.Office.Interop.Excel.Application
   oBook = oExcel.Workbooks.Open(filepath)
   'Do your stuff
   oBook.Close 'This will trigger the application native prompt if the document was modified
   oExcel.Quit()

Для других программ это сильно зависит от программы

2

Process.CloseMainWindow скорее, чемProcess.Kill.

ПоведениеCloseMainWindow идентично тому, что пользователь закрывает главное окно приложения с помощью системного меню. Следовательно, запрос на выход из процесса путем закрытия главного окна не заставляет приложение завершать работу немедленно.

Данные, отредактированные процессом, или ресурсы, выделенные процессу, могут быть потеряны, если вы позвонитеKill. Kill вызывает ненормальное завершение процесса и должен использоваться только при необходимости.CloseMainWindow обеспечивает упорядоченное завершение процесса и закрывает все окна, поэтому это предпочтительно для приложений с интерфейсом.

В случае приложений Office с несохраненными изменениями,CloseMainWindow запускает диалог сохранения. Вам нужно будет обработать сценарии, когда пользователи нажимают «Отмена», так как это может привести кWaitForExit блокировать звонки на неопределенный срок.

Например

// Launch Word application.
Process wordProcess = 
    Process.Start(@"C:\Program Files (x86)\Microsoft Office\Office12\winword.exe");

// Give user some time to type in text.
Thread.Sleep(TimeSpan.FromSeconds(20));

// Request Word to close.
wordProcess.CloseMainWindow();

// Wait until user saves or discards changes.
// May block indefinitely if user cancels.
wordProcess.WaitForExit();
0

альную контрольную сумму и посмотреть, есть ли в вашем документе какие-либо изменения, переделав контрольную сумму и сравнив ее с исходной.

Эта часть не очень понятна из вашего вопроса. Если документ будет сохранен, возможно, вы сможете посмотреть на значение date_modified файла, чтобы увидеть, были ли какие-либо изменения.

Я думаю, что ОП означает несохраненные изменения. Хотя это не совсем понятно. Steven Doggart

Похожие вопросы