2011-02-03 73 views
0

我的程序在可执行文件的目录中创建一个文件夹并保存一些输出文件。当应用程序完成后,我把它自动使用ShellExecute(NULL, _T("Open"), _T("Explorer"), _T(m_strOutputPath), NULL, SW_SHOWDEFAULT);如何检测Windows资源管理器是否显示给定的文件夹?

在资源管理器窗口中打开该文件夹现在,如果我继续再运行程序,它只会保持开放,即使它已经打开的文件夹。对于心不在焉的用户(我是其中之一),这会导致同一文件夹中有多个窗口。

有没有办法检测文件夹是否已经在资源管理器窗口中打开,如果它已经打开,不打开一个新窗口?

我在Windows Vista上MSVS 2008 SP1开发,但程序会在XP,Vista上运行,和7

回答

2

可以使用SHOpenFolderAndSelectItems功能。它会打开一个文件夹窗口并选择给定的文件。如果窗户已经打开,它会把它放在前面。

它在内部使用IShellWindows接口,特别是FindWindowSW方法。

+0

什么是关于如何用它来找到一个窗口的存在的步骤是什么? – alex 2011-02-03 18:07:36

0

试试这个:

ShellExecute(NULL, _T("Open"), _T(m_strOutputPath), NULL, NULL, SW_SHOWDEFAULT); 
相关问题