Как определить, отображает ли проводник Windows заданную папку? - PullRequest
0 голосов
/ 03 февраля 2011

Моя программа создает папку в каталоге исполняемого файла и сохраняет некоторые выходные файлы. Когда приложение заканчивается, оно автоматически открывает папку в окне проводника, используя ShellExecute(NULL, _T("Open"), _T("Explorer"), _T(m_strOutputPath), NULL, SW_SHOWDEFAULT);

Теперь, если я продолжу перезапускать программу, она просто продолжит открывать ту же папку, даже если она уже открыта. Для рассеянного пользователя (я один из них) это приводит к нескольким окнам в одной папке.

Есть ли способ обнаружить, если папка уже открыта в окне проводника, и не заставлять ее открывать новое окно, если оно уже открыто?

Я работаю в MSVS 2008 SP1 для Windows Vista, но программа будет работать на XP, Vista и 7.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

Вы можете использовать функцию SHOpenFolderAndSelectItems .Это откроет окно папки и выберет предоставленные файлы.Если окно уже открыто, оно выведет его на передний план.

Внутренне оно использует интерфейс IShellWindows , в частности метод FindWindowSW.

0 голосов
/ 20 декабря 2011

Попробуйте это:

ShellExecute(NULL, _T("Open"), _T(m_strOutputPath), NULL, NULL, SW_SHOWDEFAULT);
...