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ć.
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. –
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
@ 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