private static void DoGetOpenFileDialogFilename(NktRemoteBridge remoteBridge, Process proc) { IFileOpenDialog dlg = null; object obj = null; IntPtr hWnd; string s; try { hWnd = remoteBridge.FindWindow(proc.Id, IntPtr.Zero, "Open", "#32770", false); if (hWnd == IntPtr.Zero) hWnd = remoteBridge.FindWindow(proc.Id, IntPtr.Zero, "Abrir", "#32770", false); if (hWnd == IntPtr.Zero) { Console.WriteLine("Cannot find OpenFileDialog window"); return; } obj = remoteBridge.GetComInterfaceFromHwnd(proc.Id, hWnd, ShellIIDGuid.IFileDialog); if (obj == null) { Console.WriteLine("Cannot find retrieve IFileOpenDialog interface"); return; } dlg = obj as IFileOpenDialog; dlg.GetFileName(out s); Console.WriteLine("Filename: [" + s + "]"); } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } finally { //if (dlg != null) // Marshal.ReleaseComObject(dlg); if (obj != null) Marshal.ReleaseComObject(obj); } return; }