2

特定の.txtファイルがメモ帳で開かれているかどうかを確認する方法は?

ここに記載されている解決策を試しました

ファイルが使用中かどうかを確認する方法はありますか?

ただし、Word および pdf ファイルでは正常に機能しますが、メモ帳で開いた txt ファイルでは機能しません。

ここに私が書いたコードがあります。

public bool IsFileOpen(string strFileName)
{
    bool retVal = false;
    try
    {
        if (File.Exists(pstrFileName))
        {
            using (FileStream stream = File.OpenWrite(pstrFileName))
            {
                try
                {    
                }
                catch (IOException)
                {
                    retVal = true;
                }
                finally
                {
                    stream.Close();
                    stream.Dispose();
                }
            }
        }
    }
    catch (IOException)
    { //file is opened at another location 
        retVal = true;
    }
    catch (UnauthorizedAccessException)
    { //Bypass this exception since this is due to the file is being set to read-only 
    }
    return retVal;
} 

私はここに何かが欠けています.??

私の要件: VSS と同様に機能するアプリケーションがあります。ユーザーが特定のファイルをチェックアウトして開くと、開いている間に同じファイルをチェックインしようとします。アプリケーションは警告メッセージをスローすると想定されています。そのために、上記の機能を使用しました。word と pdf で正常に動作します。

4

3 に答える 3

0

次の戦術を使用してこれを行うこともできます: メモ帳は、ホスティング フォルダーに対して何らかのロックを保持しているようです (フォルダーを削除しようとすると、削除できないことがわかります)。

次のコードを使用できますC# を使用して、どのプロセスがファイルをロックしたかをどのように把握しますか? フォルダーをロックするプロセスのリストを確認します。プロセスの 1 つがメモ帳になります。

言及されている別の回答として、タイトルで比較できます。ファイルのオープンを発行している場合-PIDを保存して、返されたプロセスの1つと比較できます。

于 2016-01-14T14:43:02.733 に答える