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]>: > > Ahoj, > nebylo by 10x jednodussi pouzit Javu 6, ktera ma primo pro tohle podporu? > > -Vity > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] On Behalf Of Martin Blažek > > Sent: Wednesday, November 28, 2007 6:33 PM > > To: [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]
