我正在用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.
我有这些窗口的句柄,尽管我似乎无法弄清楚如何获取当前目录/将目录设置为新值(如上所述)。
任何人都能提供的帮助将不胜感激。
谢谢。