2012-12-15 11 views
5

Utworzono plik skrótu (.lnk) na pulpicie przy użyciu interfejsu IShellLink podobnego do kodu opisanego na dole this page.Czy istnieje specjalna metoda usuwania skrótu z pulpitu?

Więc moim założeniem było, że aby usunąć ten skrót, mógłbym po prostu wywołać DeleteFile w pliku .lnk, ale widocznie to nie wystarczy ... jeśli to zrobię, otrzymam resztę pliku skrótu, który wygląda tak:

enter image description here

Ale co ciekawe jest to, że jeśli mogę przeglądać pliki w katalogu pulpitu, powiedzmy z Eksploratorem Windows, plik .lnk nie jest faktycznie istnieje. Widzę pewien artefakt na powierzchni pulpitu GUI.

Każdy pomysł jak usunąć skrót

+7

OK, myślę, że to dostałem. Powinienem zrobić więcej badań przed opublikowaniem, przepraszam wszystkich. Zatrzymam to jednak dla tych, którzy również do niego dołączają. Po usunięciu pliku .lnk należy wywołać następujące komendy: 'SHChangeNotify (SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT, pDeletedFilePath, NULL);' – c00000fd

+12

Proszę wstawić komentarz jako odpowiedź. Zgodnie z najczęściej zadawanymi pytaniami udzielanie odpowiedzi na własne pytania jest nie tylko dozwolone, ale również zachęca. :-) –

+0

Aby dodać kontekst: służy jedynie do odświeżenia eksploratora (który wyświetla również ikony pulpitu). Może się to zdarzyć automatycznie lub z niewielkim opóźnieniem w niektórych wersjach okien. Podczas usuwania pliku przez interfejs Shell API ShFileOp (który wydaje się przesadny), jawrerefresh nie jest konieczne. – peterchen

Odpowiedz

2

OK, za sugestią powyżej, oto API, które musi być nazywany później odświeżyć powłokę (sposób Microsoft chce to zrobić?):

SHChangeNotify(SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT, pDeletedFilePath, NULL); 
+0

Czy możemy usunąć skrót do folderu w ten sam sposób? –

+0

@SaiKrishnaPalagummi: IDK. Minęło trochę czasu, odkąd mam do czynienia z tym. Musisz spróbować sam i opublikować wynik. – c00000fd

Powiązane problemy