2012-03-23 9 views
7

Próbuję zaimplementować nakładkę ikon na pliki i foldery, tak jak robi to SVN Tortoise lub Dropbox.Nakładka ikony pliku w języku Java dla systemu Windows

Zrobiłem dużo wyszukiwania w Internecie, ale nie mogę znaleźć rozwiązania w Javie.

Czy ktoś może mi w tym pomóc? enter image description here

+1

Dobre pytanie, ale myślę, że nie jest możliwe, aby zrobić coś takiego jak programy Java uruchamiane w wirtualna maszyna Java, która oddziela je od systemu operacyjnego, na którym działają. Nie publikuję jako odpowiedzi, ponieważ nie jestem pewien. –

+0

Będziesz musiał użyć JNI, aby przeskoczyć do natywnego kodu, aby faktycznie dokonać zmiany (to znaczy, jeśli jest to możliwe nawet za pośrednictwem niektórych interfejsów WinAPI). – Java42

+0

@ W.Goeman tak, wydaje się to trudne lub niemożliwe w Javie, ale myślę, że powinien istnieć prosty sposób na zrobienie tego. Nie wiem, ale może jest biblioteka do nakładania ikon w java lub itp. – baharcglr

Odpowiedz

4

Przykro mi potwierdzić obawy, ale nie można tego zrobić w Javie.

Ponieważ Eksplorator Windows to kontrolka, nakładka ikon jest rodzajem wtyczki. Musi być zaimplementowany jako DLL (nie jako JNI, ale prawdziwa natywna biblioteka DLL) i zarejestrowany w rejestrze systemu Windows. Jak widzisz w artykule CodeProject, twoja biblioteka DLL musi zaimplementować specjalny interfejs - IShellIconOverlayIdentifier.

Weźmy na przykład TortoiseSVN implementation.

DLL TortoiseSVN jest ładowany przez Explorer i dołączone do jego procesu:

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

Aby zrobić to w Javie trzeba by napisać DLL, która załaduje JVM i swoją JAR, który byłby przesada.

Jeśli chodzi o nakładkę Icon Tray, to aplikacja Java jest tą, która ma kontrolę, więc można to zrobić.

Powiązane problemy