2012-12-15 20 views
5

Masaüstünde, this page'un altında açıklanan kodla benzer IShellLink arabirimini kullanarak bir kısayol (.lnk) dosyası oluşturdum.Masaüstünden kısayolu kaldırmak için özel bir yöntem var mı?

Benim varsayımım, bu kısayolu kaldırmak için .lnk dosyasında DeleteFile'u arayabilirdim, ama yeterli değil ... eğer bunu yaparsam, şuna benzeyen kısayol dosyasının bir kısmını alırım:

enter image description here

Ama ne ilginçtir ben masaüstü klasöründeki dosyaları taramak eğer Windows Explorer ile söylemek yani, .lnk dosya aslında yoktur. Gördüğüm şey, masaüstü GUI yüzeyinde biraz eser.

nasıl bir kısayol kaldırmak için

+7

Tamam, sanırım anladım. Göndermeden önce daha fazla araştırma yapmalıydım, herkese üzgünüm. Yine de ona girenler için tutacağım. .lnk dosyasını sildikten sonra aşağıdakileri çağırmanız gerekir: 'SHChangeNotify (SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT, pDeletedFilePath, NULL);' – c00000fd

+12

Lütfen yorumunuzu yanıt olarak gönderin. SSS uyarınca, kendi sorularınızı yanıtlamak sadece izin verilmez, teşvik edilir. :-) –

+0

Bağlam eklemek için: bu sadece gezgini (aynı zamanda masaüstü simgelerini de görüntüler) yenilemek içindir. Pencerelerin bazı kararlarında otomatik olarak veya küçük bir gecikme ile gerçekleşebilir. Dosyayı Shell API ShFileOp (overkill görünür) aracılığıyla silerken, explicitrefresh gerekli değildir. – peterchen

cevap

2

Tamam, yukarıdaki öneri başına, burada kabuk yenilemek için sonradan çağrılması gerekir API var herhangi bir fikir (Microsoft yapıldığını istediği şekilde?):

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

Bir klasör kısayolunu aynı şekilde silebilir miyiz? –

+0

@SaiKrishnaPalagummi: IDK. Bununla uğraştığım bir süre oldu. Bunu kendiniz denemek ve sonucu göndermek zorundasınız. – c00000fd

İlgili konular