2012-12-15 15 views
5

Ho creato un file di collegamento (.lnk) sul desktop utilizzando l'interfaccia IShellLink simile al codice descritto nella parte inferiore di this page.Esiste un metodo speciale per rimuovere un collegamento da un desktop?

Quindi la mia ipotesi era che per rimuovere questa scorciatoia potevo semplicemente chiamare DeleteFile sul file .lnk, ma evidentemente non è abbastanza ... se lo faccio ottengo un resto del file di collegamento che assomiglia a questo:

enter image description here

Ma ciò che è interessante è che se passo in rassegna i file nella cartella del desktop, per esempio con Windows Explorer, il file .lnk non è in realtà lì. Quello che vedo sono alcuni artefatti sulla superficie della GUI desktop.

Qualsiasi idea di come rimuovere un collegamento

+7

OK, penso di averlo capito. Avrei dovuto fare più ricerche prima di postare, mi spiace a tutti. Lo terrò comunque per coloro che vi si imbattono. È necessario richiamare quanto segue dopo aver eliminato il file .lnk: 'SHChangeNotify (SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT, pDeletedFilePath, NULL);' – c00000fd

+12

Inserisci il tuo commento come risposta. Secondo le FAQ, rispondere alle tue domande non è solo permesso, è incoraggiato. :-) –

+0

Per aggiungere contesto: si tratta semplicemente di aggiornare Explorer (che visualizza anche le icone del desktop). Può accadere automaticamente o con un piccolo ritardo su alcune finestre di Windows. Quando si cancella il file tramite l'API Shell ShFileOp (che appare eccessivo), il servizio esplicito non è necessario. – peterchen

risposta

2

OK, per suggerimento di cui sopra, ecco l'API che deve essere chiamato in seguito per aggiornare la shell (il modo in cui Microsoft vuole farlo fare?):

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

Possiamo eliminare una scorciatoia della cartella nello stesso modo? –

+0

@SaiKrishnaPalagummi: IDK. È passato un po 'di tempo da quando mi sono occupato di questo. Dovrai provarlo tu stesso e postare il risultato. – c00000fd

Problemi correlati