c ++ - Hvordan opdager jeg, om Windows Explorer viser en bestemt mappe?

Indlæg af Hanne Mølgaard Plasc

Problem



Mit program opretter en mappe i den eksekverbare 's-mappe og gemmer nogle outputfiler. Når applikationen er færdig, har jeg den automatisk åbnet mappen i et explorer-vindue ved hjælp af ShellExecute(NULL, \_T("Open"), \_T("Explorer"), \_T(m\_strOutputPath), NULL, SW\_SHOWDEFAULT);


Nu, hvis jeg fortsætter med at køre programmet igen, vil det bare fortsætte med at åbne den samme mappe, selvom den allerede er åbnet. For den fraværende bruger (med mig at være en af ​​dem), resulterer dette i flere vinduer i samme mappe.


Er der mulighed for at opdage, om mappen allerede er åbnet i et opdagelsesvindue og ikke lade det åbne et nyt vindue, hvis det allerede er åbnet?


Jeg udvikler mig i MSVS 2008 SP1 på Windows Vista, men programmet kører på XP, Vista og 7.

Bedste reference


Du kan bruge funktionen SHOpenFolderAndSelectItems. Det åbner et mappevindue og vælger de givne filer. Hvis vinduet allerede er åbent, vil det bringe det til forsiden. [3]


Internt bruger den IShellWindows-grænsefladen, specifikt FindWindowSW-metoden. [4]

Andre referencer 1


Prøv dette:


ShellExecute(NULL, \_T("Open"), \_T(m\_strOutputPath), NULL, NULL, SW\_SHOWDEFAULT);