Por lo que veo Office abre N archivos en un mismo proceso.
Deberías de listar los handle de todos los procesos para ver cual de ellos es el que tiene el/los archivos que has abierto. Para esto necesitas hacer uso de
NtQuerySystemInformation, por lo que implica algo de código no manejado.
Otra alternativa es utilizar
handle.exe de Sysinternals para listar esta info, algo de este estilo;
static void Main(string[] args)
{
ProcessStartInfo info
= new ProcessStartInfo
(); info.WindowStyle = ProcessWindowStyle.Hidden;
info.FileName = @"D:\handle.exe";
info.Arguments = "xls"; //aquí va la ruta del archivo para la búsqueda
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
Process p
= new Process
() { StartInfo
= info
}; p.Start();
List
<string> lines
= new List
<string>(); while (!p.StandardOutput.EndOfStream)
lines.Add(p.StandardOutput.ReadLine());
//con la lista puedes hacer lo que quieras, en este caso lo muestro por pantalla
lines.Skip(5).ToList().ForEach(h => Console.WriteLine(h));
Console.ReadKey();
}
Saludos