Methodes natives

franckouze Messages postés 33 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 11 juin 2003 - 13 sept. 2002 à 13:55
cs_Tytia Messages postés 13 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 24 juin 2006 - 5 avril 2004 à 12:01
salut a tous
est-ce que qqun pourrait m'expliquer comment fonctionne une methoed native et comment on l'utilise SVP
merci

2 réponses

yaggi Messages postés 2 Date d'inscription dimanche 15 septembre 2002 Statut Membre Dernière intervention 16 septembre 2002
15 sept. 2002 à 20:47
Il existe des developpement java, ou vouv aurez besoin d'écrire du code dans un autre langage. Un tel code est généralement appelé code natif. On trouve essentiellement trois raisons pour lesquelles ce peut-être le bon choix.
1° Vous disposez d'une quantité importante de code débogué dans cet autre langage et il serait fastidieux de le transcrire en java
2° Votre application necessite l'accès à des unités ou fonctionnalités système
3° La vitesse de certaine partie du code est essentielle
voila dans un premier temps le pourquoi du code natif, si vous êtes dans l'une de ces situations faite le savoir et j'en dirai plus
0
cs_Tytia Messages postés 13 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 24 juin 2006
5 avril 2004 à 12:01
Bonjour,
je cherche à ajouter une clé dans la base de registre windows,
je crois savoit qu'il faut pour cela passer par la JNI.
J'ai esaye de charger la dll advapi32, et de passer par ses méthodes. Mais cela me crée une erreur.
Peut - on se servir de n'importe quel dll, ou faut il des dll specifiques faites pour dialoguer avec Java?

voici un bout de code que j'utilise, pouvez vous me dire si il y a quelque chose qui cloche?

static long HKEY_LOCAL_MACHINE=0x80000002;
static long REG_OPTION_NON_VOLATILE = 0x0;      // ' Key is preserved when system is rebooted
static long STANDARD_RIGHTS_ALL = 0x1F0000;
static long SYNCHRONIZE = 0x100000;
static long READ_CONTROL = 0x20000;
static long STANDARD_RIGHTS_READ = (READ_CONTROL);
static long STANDARD_RIGHTS_WRITE = (READ_CONTROL);
static long KEY_CREATE_LINK = 0x20;
static long KEY_CREATE_SUB_KEY = 0x4;
static long KEY_ENUMERATE_SUB_KEYS = 0x8;
static long KEY_NOTIFY = 0x10;
static long KEY_QUERY_VALUE = 0x1;
static long KEY_SET_VALUE = 0x2;
static long KEY_READ = ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~ SYNCHRONIZE));
static long KEY_WRITE = ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~ SYNCHRONIZE));
static long KEY_EXECUTE = (KEY_READ);
static long KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~ SYNCHRONIZE));

static {System.loadLibrary("advapi32");}
private static native long RegCloseKey(long hKey);
private static native long RegDeleteKey(long hKey,String lpSubKey);
private static native long RegCreateKeyEx(long hKey,String lpSubKey,long Reserved,String lpClass,long dwOptions,long samDesired,long lpSecurityAttributes,long phkResult,long lpdwDisposition);
private static native long RegOpenKeyEx(long hKey,String lpSubKey,long Reserved,long samDesired,long phkResult);

private void inscritBdRegistre()
{
long loc_result=0;
long loc_disp=0;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources\\FriFollies",0l,KEY_ALL_ACCESS,loc_result)==0l) System.out.println("c bon");
else System.out.println("c bad");
}


Tytia
0
Rejoignez-nous