将外部OpenFileDialog / SaveFileDialog重定向到新目录?

时间:2019-06-17 10:08:15

标签: c# windows file openfiledialog savefiledialog

我正在用C#编写一些软件,该软件将检测外部(不是我的应用程序的一部分)OpenFileDialog / SaveFileDialog窗口何时打开(在任何应用程序中),并且我都需要获取OpenFileDialog / SaveFileDialog的当前目录并重新-将其定向到特定事件的另一个位置。

例如,用户打开Microsoft Word,选择“文件”->“打开”,然后OpenFileDialog打开到目录C:\ Users \ Username \ Documents。我需要一种获取“ C:\ Users \ Username \ Documents \”字符串值的方法,还需要一种将该OpenFileDialog重定向到新目录的方法。例如:C:\ Users。

我了解我可以使用以下代码来获取(并重定向目录)打开的Windows资源管理器窗口:

var ShellWindows = new SHDocVw.ShellWindows();

foreach (SHDocVw.InternetExplorer ShellWindow in ShellWindows)
{
    string ShellWindowFullNameUpperCase = ShellWindow.FullName.ToUpper();

    if (ShellWindowFullNameUpperCase.Equals("C:\\WINDOWS\\EXPLORER.EXE"))
    {
        ShellWindow.Navigate(SelectedFilePath);
        break;
    } // end if.
} // end for/each.

我已经阅读了Stack Overflow上的其他文章,即OpenFileDialog / SaveFileDialog不能以相同的方式访问。

我编写了两种方法来检测聚焦窗口是OpenFileDialog还是SaveFileDialog:

if (IsOpenFileDialog(ForegroundWindow))
{
    Debug.WriteLine("OpenFileDialog Detected");
}
else if (IsSaveFileDialog(ForegroundWindow))
{
    Debug.WriteLine("SaveFileDialog Detected");
} // end if.

我有这些窗口的句柄,尽管我似乎无法弄清楚如何获取当前目录/将目录设置为新值(如上所述)。

任何人都能提供的帮助将不胜感激。

谢谢。

0 个答案:

没有答案