I wanted to test if a particular file is already open before trying to launch it, so I came up with this:
    public void LaunchErrorLog()
    {
        var logFile = ConfigurationManager.AppSettings["Log"];
        if (IsLogOpen(logFile))
            return; //figure out how to give focus to other app later
        var psi = new ProcessStartInfo(logFile);
        psi.WindowStyle = ProcessWindowStyle.Maximized;
        Process.Start(psi);   
    }
    private bool IsLogOpen(string p)
    {
        try
        {
            using (var s = new FileStream(p, FileMode.Open, FileAccess.Read)){}
        }
        catch (IOException)
        {
            return true;
        }
        return false;
    }
I'm testing using a .log file (just a text file) that I've got open in Baretail. The method always returns false regardless of whether or not the file is open. I tried opening it in Notepad, and it still returns false.
Basically, the end objective is to give focus to the application that has the file open, or launch the application/file if it's not already open. But this is always false so it just goes on and launches a new instance of Baretail with the file open.
Also tried the top solution found here; Is there a way to check if a file is in use?
 
     
     
    