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:
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
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
Inserisci il tuo commento come risposta. Secondo le FAQ, rispondere alle tue domande non è solo permesso, è incoraggiato. :-) –
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