2012-03-23 18 views
7

Sadece Tortoise SVN veya Dropbox gibi dosya ve klasörlerde simge yer paylaşımı uygulamasına çalışıyorum.Windows için java'da dosya ikonu bindirme

İnternette çok fazla arama yaptım, ancak Java'da bir çözüm bulamıyorum.

Bu konuda bana yardımcı olan var mı? enter image description here

+1

İyi soru, ama java programları çalıştırmak gibi bir şey yapmak mümkün değildir düşünürdüm Çalıştırdıkları işletim sisteminden onları ayıran Java sanal makinesi. Emin olmadığım bir cevap olarak yayınlamıyorum. –

+0

Aslında, değişikliği yapmak için (yani, bazı WinAPI aracılığıyla mümkün olsa bile) yerel koda atlamak için JNI kullanmanız gerekecektir. – Java42

+0

@ W.Goeman evet, javada zor veya imkansız görünüyor, ama bunu yapmanın kolay bir yolu olmalı diye düşünüyorum. Bilmiyorum ama belki de java veya başka bir yere yerleştirmek için bir kütüphane var. – baharcglr

cevap

4

Korkularınızı doğruladığım için üzgünüz, ancak Java'da yapılamıyor.

Windows Gezgini denetimde olduğundan, Simge Yerleşimi bir çeşit eklentidir. Bir DLL (JNI değil gerçek bir yerel DLL) olarak uygulanması ve Windows Kayıt Defteri'nde kayıtlı olması gerekir. CodeProject makalesinde gördüğünüz gibi, DLL dosyanızın IShellIconOverlayIdentifier - belirli bir arabirim uygulamalıdır. Örneğin, TortoiseSVN implementation ürününü ele alalım.

tortoisesvn en DLL Explorer tarafından yüklenen ve süreç takılır:

DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /* lpReserved */) 
{ 
    ... 
    if (dwReason == DLL_PROCESS_ATTACH) 
    ... 

Bir olacağını JVM ve JAR yük olacak bir DLL yazmak gerekir Java ile bunun için, overkill.

Tepsi Simgesi yer paylaşımına gelince, Java uygulamanız kontrol edilebildiği için yapılabilir.