1

C#では、「MyDoc.docx」という名前の一時フォルダーにファイルを作成します。

次に、このファイルを使用してWordプロセスを開始します。

FileSystemWatcherを使用して、ファイルの変更を監視し、Wordプロセスがいつ終了するかも監視します。

彼の文書に加えられた変更を読みたいと思います。

ただし、Wordは私が提供したものとは異なるファイル名を使用しています。短い(8.3)ファイル名を使用しています。ただし、短いファイル名を計算したものを使用していません。Wordは独自の一時ファイル名を使用しているようです。

ファイルが変更されたことを確認するにはどうすればよいですか?Wordが使用しているファイルの名前を知るにはどうすればよいですか?

何かご意見は?

答え:

Wordファイルの変更されたイベントを処理する代わりに、名前が変更されたイベントを処理する必要があります。Wordがドキュメントを保存すると、一時ファイルが保存され、元のファイル名にコピーされます。

4

2 に答える 2

1

Wordは常に一時ファイルを「C:\ Users \ Alex \ Desktop」(Windows Server 2008を除く)に配置するため、次のように見つけることができます。

var files = new DirectoryInfo(@"C:\Users\Alex\Desktop").GetFiles()
.Where(arg => !(arg.Attributes.HasFlag(FileAttributes.Hidden) && arg.Extension == ".docx" && arg.Name.StartsWith("~$")))
.ToList();

編集

そしてこれを見つけてみてください

        Process[] processes = Process.GetProcesses();
        int i = 0;
        foreach (Process p in processes)
        {
            if (p.ProcessName.Contains("WinWord"))
            {
                try
                {
                    ProcessModuleCollection modules = p.Modules;
                    for (int j = 0; j <= modules.Count - 1; j++)
                    {
                        string sFile = modules[j].FileName;//can be needed file
                    }
                }
                catch (Exception exception)
                {
                    //MsgBox(("Error : " & exception.Message)) 
                }
            }
        }
于 2012-04-26T13:16:20.200 に答える
0

Wordファイルの変更されたイベントを処理する代わりに、名前が変更されたイベントを処理する必要があります。Wordがドキュメントを保存すると、一時ファイルが保存され、元のファイル名にコピーされます。

于 2012-10-31T14:46:15.873 に答える