如何检测 Windows 资源管理器是否正在显示给定文件夹?

发布于 2024-10-15 09:58:55 字数 377 浏览 1 评论 0原文

我的程序在可执行文件的目录中创建一个文件夹并保存一些输出文件。当应用程序完成时,我让它使用 ShellExecute(NULL, _T("Open"), _T("Explorer"), _T(m_strOutputPath), NULL, SW_SHOWDEFAULT); 自动在资源管理器窗口中打开文件夹。 code>

现在,如果我继续重新运行该程序,即使它已经打开,它也会继续打开同一个文件夹。对于心不在焉的用户(我就是其中之一),这会导致同一文件夹出现多个窗口。

有没有办法检测文件夹是否已在资源管理器窗口中打开,并且如果已打开则不使其打开新窗口?

我正在 Windows Vista 上的 MSVS 2008 SP1 中进行开发,但该程序将在 XP、Vista 和 7 上运行。

My program creates a folder in the executable's directory and saves some output files. When the application finishes, I have it automatically open the folder in an explorer window using ShellExecute(NULL, _T("Open"), _T("Explorer"), _T(m_strOutputPath), NULL, SW_SHOWDEFAULT);

Now, if I keep re-running the program, it will just keep opening the same folder even if it is already opened. For the absent-minded user (with me being one of them), this results in multiple windows of the same folder.

Is there a way to detect if the folder is already opened in an explorer window and not make it open a new window if it is already opened?

I'm developing in MSVS 2008 SP1 on Windows Vista, but the program will run on XP, Vista, and 7.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

大姐,你呐 2024-10-22 09:58:55

您可以使用 SHOpenFolderAndSelectItems 函数。它将打开一个文件夹窗口并选择给定的文件。如果窗口已经打开,它将把它带到前面。

在内部,它使用 IShellWindows 界面,特别是 FindWindowSW 方法。

You can use the SHOpenFolderAndSelectItems function. It will open a folder window and select the files given. If the window is already open, it'll bring it to the front.

Internally, it uses the IShellWindows interface, specifically the FindWindowSW method.

一口甜 2024-10-22 09:58:55

试试这个:

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

Try this:

ShellExecute(NULL, _T("Open"), _T(m_strOutputPath), NULL, NULL, SW_SHOWDEFAULT);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文