在 VB.NET 检查使用 process.start() 启动的文件中的更改
本文关键字:启动 文件 start NET VB 检查 process | 更新日期: 2023-09-27 18:34:54
我正在开发一个基于vbnet/c#.NET的应用程序,它使用不同的应用程序(excel,word等(打开文件。
应用程序使用Dim app As Process = Process.Start(ProcessProperties)
启动
现在,当我必须终止进程时,我使用app.Kill()
但我需要在杀死文档之前检查文档是否已被修改。
我该如何处理?如果可能,如何启动应用程序本机提示进行保存?
谢谢
应用程序,请使用 Office 互操作程序集,而不是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()
对于其他程序,它在很大程度上取决于程序
调用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();
此问题有不同的方法。您可以计算某种初始校验和,并通过重做校验和并与原始校验和进行比较来查看您的文档是否有任何更改。
这部分从你的问题中不是很清楚,如果保存了文档,可能您可以查看文件的date_modified值,看看是否有任何修改。