Dobry den, neni k tomu JDIC jeste potreba doplnit do JRE/JDK nejakou nativni knihovnu (so, dll)? Zda se, ze jen jdic.jar nebude stacit...
Podle dokumentu https://jdic.dev.java.net/documentation/README.html to vskutku vypada, ze tam neco takoveho je... mp. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Martin Blažek Sent: Wednesday, November 28, 2007 19:11 PM To: Java Subject: Re: JNI - Odchycení zprávy okna Stáhl jsem jdic.jar a zkusil zkompilovat a spustit example, který tam byl přiložený. Tohle je výsledek: Exception in thread "main" java.lang.UnsatisfiedLinkError: no tray in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at org.jdesktop.jdic.tray.internal.impl.DisplayThread.<clinit>(Unknown Source) at org.jdesktop.jdic.tray.internal.impl.WinSystemTrayService.<clinit>(Unknown Source) at org.jdesktop.jdic.tray.internal.impl.ServiceManagerStub.getService(Unknown Source) at org.jdesktop.jdic.tray.internal.ServiceManager.getService(Unknown Source) at org.jdesktop.jdic.tray.SystemTray.<clinit>(Unknown Source) at cz.martin.pokus.Tray.<init>(Tray.java:10) at cz.martin.pokus.Tray.main(Tray.java:208) Nevíte, pls, co s tím? Díky. M. Martin Blažek napsal(a): > Díky, díky, vyzkouším to :-) > > Filip Jirsák napsal(a): >> A pokud už z nějakého důvodu nemůžete použít Javu 6, podívejte se na >> https://jdic.dev.java.net/ , odkud ta komponenta pro Javu 6 pochází. >> >> Filip Jirsák >> >> 2007/11/28, Vity <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>: >> >> Ahoj, >> nebylo by 10x jednodussi pouzit Javu 6, ktera ma primo pro tohle >> podporu? >> >> -Vity >> >> > -----Original Message----- >> > From: [EMAIL PROTECTED] >> <mailto:[EMAIL PROTECTED]> >> > [mailto:[EMAIL PROTECTED] >> <mailto:[EMAIL PROTECTED]>] On Behalf Of Martin Blažek >> > Sent: Wednesday, November 28, 2007 6:33 PM >> > To: [email protected] <mailto:[email protected]> >> > Subject: JNI - Odchycení zprávy okna >> > >> > Nazdar všem. >> > >> > Můj problém je následovný: >> > Mám Java aplikaci, kterou chci "minimalizovat do try lišty". >> > Udělal jsem >> > si proto pomocí JNI dll knihovnu ve které mám metody >> minimizeToTry a >> > restoreFromTry. V Javě mám udělané native metody stejného >> > jména, které >> > volám. Po zavolání minimizeToTry se vytvoří neviditelné okno, >> > jehož HWND >> > se použije při vytvoření ikonky. Ikonka se v try liště ukáže a po >> > restoreFromTry i správně zmizí. Moje otázka zní: Jak >> > zajistit, aby se po >> > kliknutí na ikonku v liště dalo vědět Java aplikaci, aby se mohla >> > zobrazit a aby se zavolala restoreFromTry (nebo provedla něco >> jiného)? >> > Poznámka: Samozřejmě je to jen pokusná verze, jaká ikonka tam >> > bude a tak >> > podobně neřeším :-) >> > >> > Díky všem za rady :-) >> > >> > >> > Global.java: >> > ... >> > public static native void minimizeToTry(String title); >> > public static native void restoreFromTry(); >> > ... >> > >> > dllmain.cpp: >> > #include " dll.h" >> > >> > HWND hwnd; >> > LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); >> > BOOL createWindow(void); >> > >> > JNIEXPORT void JNICALL Java_cz_pokus_Global_minimizeToTry(JNIEnv * >> > jnienv, jclass jclass, jstring title){ >> > jboolean isCopy; >> > const char *windowTitle = jnienv->GetStringUTFChars(title, >> &isCopy); >> > >> > createWindow(); >> > >> > NOTIFYICONDATA nid = { 0 }; >> > nid.cbSize = sizeof(NOTIFYICONDATA); nid.hWnd = hwnd; nid.uID = >> > ICON_1; nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; >> > nid.uCallbackMessage = MSG_MINTRAYICON; nid.hIcon = >> LoadIcon(NULL, >> > IDI_APPLICATION); >> > strcpy(nid.szTip, windowTitle); >> > >> > Shell_NotifyIcon(NIM_ADD, &nid); >> > >> > return; >> > } >> > >> > JNIEXPORT void JNICALL >> Java_cz_pokus_Global_restoreFromTry(JNIEnv * >> > jnienv, jclass jclass){ >> > NOTIFYICONDATA nid = {0}; >> > nid.cbSize = sizeof(NOTIFYICONDATA); >> > nid.hWnd = hwnd; >> > nid.uID = ICON_1; >> > Shell_NotifyIcon(NIM_DELETE, &nid); >> > >> > return; >> > } >> > >> > BOOL createWindow(){ >> > WNDCLASSEX wincl; >> > >> > //wincl.hInstance = hThisInstance; >> > wincl.lpszClassName = "HLPWINDOW"; >> > wincl.lpfnWndProc = WindowProcedure; wincl.style = >> CS_DBLCLKS; >> > wincl.cbSize = sizeof (WNDCLASSEX); >> > wincl.hIcon = NULL; >> > wincl.hIconSm = NULL; >> > wincl.hCursor = LoadCursor(NULL, IDC_ARROW); >> > wincl.lpszMenuName = NULL; >> > wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; >> > wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; >> > >> > if (!RegisterClassEx (&wincl)){ >> > printf("Chyba pri registrovani!!! >> > "); >> > return FALSE; >> > } >> > >> > hwnd = CreateWindowEx ( >> > 0, "HLPWINDOW", >> > >> > "Pokus", WS_OVERLAPPEDWINDOW, >> > CW_USEDEFAULT, CW_USEDEFAULT, >> > 544, 375, >> > HWND_DESKTOP, >> > NULL, >> > NULL, NULL ); >> > return TRUE; >> > } >> > >> > LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM >> > wParam, LPARAM lParam){ >> > switch (message){ >> > /* Zde odchycenou message bych chtel poslat Java aplikaci */ >> > default: >> > printf("Message: %i\n",message); >> > return DefWindowProc (hwnd, message, wParam, lParam); >> > } >> > } >> > >> > dll.h: >> > /* DO NOT EDIT THIS FILE - it is machine generated */ >> > #include <jni.h> >> > #include <windows.h> >> > #include <stdio.h> >> > >> > #define ICON_1 10001 >> > #define MSG_MINTRAYICON (WM_USER+1) >> > >> > #ifndef _Included_cz_pokus_Global >> > #define _Included_cz_pokus_Global >> > #ifdef __cplusplus >> > extern "C" { >> > #endif >> > >> > JNIEXPORT void JNICALL >> Java_cz_pokus_Global_minimizeToTry(JNIEnv *, >> > jclass, jstring); >> > JNIEXPORT void JNICALL >> Java_cz_pokus_Global_restoreFromTry(JNIEnv *, >> > jclass); >> > #ifdef __cplusplus >> > } >> > #endif >> > #endif >> >> >> >> >> -- >> Filip Jirsák >> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > >
