Hvordan jeg kan tjekke, er en specifik mappe åbnet af en bruger (Windows Stifinder) i c ++

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kan jeg kontrollere, at en bestemt mappe er åbnet af en bruger (Windows) i c ++ (WinAPI)?
For eksempel har jeg et program i userMy Documentschecker.exe.
checker.exe kører i baggrunden og kontrollerer om brugeren åbner My Documents bibliotek. Hvis dette er sandt, skal du gemme systemtiden til en fil.txt.
Tak for hjælp!

Bedste reference


Du skal først få PIDL'en til brugerens 'My Documents' -mappe med enten:



  • SHGetDesktopFolder() og IShellFolder::ParseDisplayName() eller SHParseDisplayName(). Angiv L"::{450d8fba-ad25-11d0-98a8-0800361b1103}" som visningsnavn for at analysere (se Mine dokumenter og Mine billeder-mapper). [10] [11] [12] [13]

  • SHGetFolderPath(CSIDL\_MYDOCUMENTS) [14]

  • SHGetKnownFolderPath(FOLDERID\_Documents) (kun Vista og senere) [15]



Derefter kan du opregne alle Explorer-vinduer og sammenligne PIDL'erne fra hvert vindue. Hvis et vindues PIDL matcher/begynder med den hentede PIDL, har dette vindue 'My Documents' -mappen åben eller en (grand) børnemappe.