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]

Odpovedet emailem