Я пишу некоторое программное обеспечение на C #, которое будет определять, когда открыто внешнее (не является частью моего приложения) окно OpenFileDialog / SaveFileDialog (в любом приложении), и мне нужно как получить текущий каталог OpenFileDialog / SaveFileDialog, так и повторно-направить его в другое место для определенного события.
Например, пользователь открывает Microsoft Word, выбирает Файл -> Открыть, и OpenFileDialog открывает каталог C: \ Users \ Имя пользователя \ Documents.Мне нужен способ получения строкового значения "C: \ Users \ Username \ Documents \", а также способ перенаправления этого OpenFileDialog в новый каталог.Например: C: \ Users.
Я понимаю, что могу использовать следующий код для получения (и перенаправления каталога) открытых окон Windows Explorer:
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.
Я прочиталв других сообщениях о переполнении стека, что OpenFileDialog / SaveFileDialog не может быть доступен таким же образом.
Я написал два метода, чтобы определить, является ли сфокусированное окно OpenFileDialog или SaveFileDialog:
if (IsOpenFileDialog(ForegroundWindow))
{
Debug.WriteLine("OpenFileDialog Detected");
}
else if (IsSaveFileDialog(ForegroundWindow))
{
Debug.WriteLine("SaveFileDialog Detected");
} // end if.
У меня есть дескриптор для этих окон, хотя я не могу понять, как получить текущий каталог / установить для каталога новое значение (как объяснено выше).
Любая помощь, которую кто-либо может оказать, будет оченьприветствуется.
Заранее спасибо.