我试图找到最通用的方法来了解文件是否正在使用"通过任何申请。
对于像notepad / onenote / notepad ++这样的应用程序也是如此(它不会锁定文件)。
我通过我的应用程序(使用Process.Start)处理文件的打开,我需要在用户完成工作时删除该文件。
我到目前为止所得到的是以下内容:
我完全迷失了#34; Notepad ++"应用程序或类似的。 notepad ++对文件或文件夹没有任何锁定,它使用单个进程。 在进行Process.Start时,我甚至不知道如何处理这种情况。我甚至没有这个过程的名称。 (我可以检查注册表,看看谁是打开文件的默认应用程序)...
那么,还有其他方向吗?
谢谢!
==编辑==
嗯,目前我已经决定了以下逻辑,除非它有一个缺陷:这就是我想的想法
答案 0 :(得分:0)
我猜你正在努力做到这一点,
static void ShowFile(string fileToShow) {
using (Process proc = new Process()) {
ProcessStartInfo psi = new ProcessStartInfo(fileToShow);
psi.UseShellExecute = true;
proc.StartInfo = psi;
proc.Start();
proc.WaitForExit();
}
}
但是,也许你应该这样做
static void ShowFile(string fileToShow) {
using (Process proc = new Process()) {
ProcessStartInfo psi = new ProcessStartInfo(@"C:\Program Files (x86)\Notepad++\notepad++.exe", "-multiInst " + fileToShow);
psi.UseShellExecute = false;
proc.StartInfo = psi;
proc.Start();
proc.WaitForExit();
}
}
然后当你的函数返回时,你可以删除你的临时文件。
据我所知,您可能不知道系统是否已经安装了notepad ++及其路径等。在这种情况下,您可以尝试使用windows附带的notepad.exe路径。
事实上,你所看到的并没有完美的解决方案。换句话说,没有文件查看器/编辑器保证您可以找到为打开文件而注册的默认应用程序,但您不知道它是作为单个实例还是多实例应用程序启动,还是使用DDE等进行通信