Accueil > Forum > > > > JNI natif -> Java - appeler java depuis une fonction callback???
JNI natif -> Java - appeler java depuis une fonction callback???
mercredi 9 juillet 2008 à 09:00:17 |
JNI natif -> Java - appeler java depuis une fonction callback???

rachmasse
|
salu, Voila j'essaye depuis plusieurs jours deja de faire remonter à JAVA mes evenements detectés grace aux fameux hook. Le problème est que je n'arrive à rien depuis les fonctions callback (procedure qui releve les evenements ). aucune variable globale n'est valide. Ce que je fais actuellement : - sauvegarde de la JavaVM en variable globale grace à JNI_OnLoad - utilisation de cette var globale depuis la fonction callback est ce que quelqu'un a une idée?
|
|
mercredi 9 juillet 2008 à 10:34:17 |
Re : JNI natif -> Java - appeler java depuis une fonction callback???
|
mercredi 9 juillet 2008 à 13:56:57 |
Re : JNI natif -> Java - appeler java depuis une fonction callback???

juju12
|
Je connais pas du tout Java; cependant si tes hooks sont globaux ou ciblent d'autres processus, il faut savoir que les callbacks seront appelées dans le contexte du (ou des) programme(s) cible(s). Par conséquent il n'y a aucun partage de variables puisque tout se passe dans des espaces d'adressages différents. Si tu veux passer des valeurs entre ton programme source et les hooks, il faut utiliser de la mémoire partagée, par exemple avec l'API Windows CreateFileMapping() et MapViewOfFile().
|
|
mercredi 9 juillet 2008 à 14:38:14 |
Re : JNI natif -> Java - appeler java depuis une fonction callback???

rachmasse
|
ok j'ai deja utilisé cet technique qui marche trés bien en effet pour echanger des données style entier ou caractère . Par contre lorsque j'essaye de sauvegarder le pointer de la JVM crée et de le faire passer à ma methode callback, ca ne semble pas marcher. Pourtant j'initialise bien le pointer et quand je suis dans ma fonction callback j'ai verfiié que le pointeur est bien different de null mais il semble erroné.
|
|
mercredi 9 juillet 2008 à 18:14:25 |
Re : JNI natif -> Java - appeler java depuis une fonction callback???

juju12
|
en cas de pointeur c'est différent; un pointeur est valable seulement dans l'espace mémoire dans lequel il a été référencé. Donc tu ne peux pas simplement le passer à une autre application, puisque ce ne sera pas le même contexte et donc la même valeur pointera sur tout à fait autre chose. Tu peux par contre peut-être utiliser ReadProcessMemory(), qui permettra depuis ta callback, à partir du pointeur du processus de base, de lire la mémoire dans le processus de base. Cependant, ceci permet seulement de copier la mémoire dans un nouveau buffer. Je ne vois pas trop ce que tu veux faire en fait (comme dit j'y connais rien à Java), mais ne serait-il pas plus simple, à partir de la callback, d'envoyer des messages vers le processus source où le traitement serait assuré (parce que du coup tu seras dans le bon espace mémoire)?
|
|
jeudi 10 juillet 2008 à 09:13:21 |
Re : JNI natif -> Java - appeler java depuis une fonction callback???

rachmasse
|
bien joué l'idée des messages !merci de m'aider c cool. ca pourrait etre une solution, parcontre tu pourrais me dire comment envoyer des messages entre different processus??? il me semble que ca marche avec des SIGNAL mais je suis plus trés sur du fonctionnement
++
|
|
jeudi 10 juillet 2008 à 12:02:00 |
Re : JNI natif -> Java - appeler java depuis une fonction callback???

juju12
|
Réponse acceptée !
Il y a toute une série de fonctions associées dans l'API : SendMessage() // à une fenêtre, attend la réponse PostThreadMessage() // à un thread , retourne immédiatement ...
Le mieux serait je pense, si tu n'as pas besoin de réponse du programme source, d'utiliser PostThreadMessage(), parce que SendMessage s'adresse à une fenêtre donc si tu n'en n'as pas... Tu peux définir tes messages personnalisés à partir de WM_USER, par exemple : #define WM_PERSO_0 (WM_USER+2) etc...
Par contre du coup dans ton programme source tu devras avoir une boucle de récupération de message. Je ne sais pas si tu y es familier, dans le cas contraire :
MSG msg; msg.message=WM_NULL; while(msg.message!=WM_PERSO_QUIT) // par exemple { GetMessage(&msg,NULL,WM_NULL,WM_NULL); switch(msg.message) { case WM_PERSO_0: ... } } Simple à comprendre : GetMessage() récupère les messages dans la file du thread, et tu boucles tant que tu n'as pas reçu l'ordre de sortir (WM_PERSO_QUIT). Par contre, faudra penser à le donner, cet ordre, depuis ton hook! Par exemple si l'application hookée se termine etc... Bien sûr tu peux mettre n'importe quelle autre condition dans le while à la place du message quitter, genre un temps limite...
La fonction PostThreadMessage() a besoin de l'ID du thread auquel envoyer le message, ce qui veut dire que tu dois lui passer cette information : c'est là qu'intervient CreateFileMapping() et compagnie. Tu pourras récupérer l'ID du thread de ton programme source, par exemple avant d'installer le hook, par GetCurrentThreadId().
Bon si tu veux un exemple concret j'avais déposé une source de hook sur le notepad, où tu pourras trouver mémoire partagée, hooks et envoi de messages entre callback du hook et programme principal. http://www.cppfrance.com/codes/PERSONNALISER-APP-CHANGER-COULEUR-POLICE-NOTEPAD_44037.aspx Il y en a plein d'autres sur le site.
|
|
jeudi 10 juillet 2008 à 13:36:54 |
Re : JNI natif -> Java - appeler java depuis une fonction callback???

rachmasse
|
merci mille fois, c la grande classe je pense que ca va le faire!!!!
|
|
Cette discussion est classée dans : fonction, java, globale, callback, jni
Répondre à ce message
Sujets en rapport avec ce message
fonction de callback [ par veve33 ]
Bonjour,j'aimerais savoir comment faire du callback en c pour compiler sous unix mais aussi sous windows surement a terme.Mon but etant de faire une l
Utilisation d'une fonction callback [ par laurentl2000 ]
Bonjour, Voici une fonction callback destinée à envoyer les titres des fenêtres IE ouvertes dans une listbox... BOOL CALLBACK EnumWindowsProc(HWND hwn
declarer une variable globale [ par EricLeRouge ]
J'aimerai savoir comment declarer une varible (par ex un int) en globale dans le cas d'un projet avec plusieurs fichiers. Si je cree un .h ou je decla
Accèder à un objet depuis Fonction membre de callback statique [ par Jeffray ]
Bonjour,J'ai une fonction membre statique de callback, qui correspond à une classe de fenêtre que j'enregistre.Comment faire pour transmettre à cette
[JNI] Probleme de creation d'une JVM dans c++ [ par vincy the pooh ]
Boinjour,je cherche a creer une JVM par JNI afin d'executer un programme java a partir d'une DLL c++.Pour debuter, je me suis penché sur le invoke.c e
fonction callback en c++ [ par gbcha ]
Je voudrais comprendre à quoi sert et comment marche une fonction dite "callback" ?Mercigbcha
Faire une callback vers un exe dans un callback hook d'une dll [ par Suisse00 ]
Salut :) J'ai créer un hook sur le clavier dans une DLL, dans le callback du hook j'aimerais faire un callback vers une fonctoin du fichier exe. J'ar
variable globale ou non [ par fcbouan ]
quel es la bonne approche , utiliser par exemple une variable globale de buffer gMonbuffer[TAILLE] et l utiliser dans une fonction ( ecriture dans un
Adresse d'une fonction CallBack dans une classe [ par Capa6T ]
Bonjour, J'ai un petit souçis pour récupèrer l'adresse d'une fonction CallBack dans une classe. MaClasse.h : ------------ class MaClasse { protected
Pointeur sur fonction ? [ par tintin72 ]
Bonjour, J'ai un petit souci avec les pointeurs sur fonction. Voilà, j'ai une fonction qui prend comme argument un pointeur sur fonction: void maFonct
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|