Ce petit tuto vous propose d'exécuter une DLL depuis un livre Linotte !

Pour illustrer simplement cet exemple, nous allons utiliser une DLL déjà incluse dans le système d'exploitation Windows (User32.dll).

Ce tuto a été testé sous Windows XP.

Voici les étapes :

1 - Télécharger Jnative

L'utilisation de cette librairie simplifie l'appel des DLL. Vous pouvez la trouver ici :
http://sourceforge.net/projects/jnative/
Copier le fichier jnative.jar dans le répertoire greffons de votre Atelier.

2 - Création du descripteur de greffon

Dans votre éditeur de texte préféré, copier le descripteur suivant :

Code:

<
?xml version="1.
0" encoding="UTF-8"?>

<
greffon nom="DemoDLL" espece="DemoDLL" class="DemoDLL">

<
lib>
JNative.
jar<
/lib>

<
lib>
DemoDLL.
zip<
/lib>

<
description>
Exemple d'appel d'une DLL sous Windows<
/description>

<
auteur>
R.
M<
/auteur>

<
version>
0.
1<
/version>

<
/greffon>

Les balises lib indiquent à l'interprète Linotte les librairies qu'il devra charger au démarrage :
- JNative.jar
- DemoDLL.zip contiendra le code Java de notre greffon

3 - Création du greffon

Maintenant, depuis votre éditeur Java adoré, créez la classe Java suivante :

Code:

import org.
linotte.
greffons.
externe.
Greffon;

import org.
linotte.
greffons.
externe.
Greffon.
DocumentationHTML;

import org.
xvolks.
jnative.
JNative;

import org.
xvolks.
jnative.
Type;


/**
* http:
//jnative.
sourceforge.
net/docs/org/xvolks/jnative/JNative.
html
*
*/

@DocumentationHTML("Ce greffon présente un exemple d'utilisation d'un dll sous Windows.
Il s'utilise en appelant demodll.
message(\"Bonjour tout le monde !\")")
public class DemoDLL extends Greffon {

@Slot(nom = "message")
public String message(String texte) {
String retour = "-1";

try {
JNative messageBox = new JNative("User32.
dll", "MessageBoxA");

messageBox.
setRetVal(Type.
INT);

messageBox.
setParameter(0, Type.
INT, "0");

messageBox.
setParameter(1, Type.
STRING, texte);

messageBox.
setParameter(2, Type.
STRING, "Message depuis Linotte !");

messageBox.
setParameter(3, Type.
INT, "" + ( 0x00000020L /*MB_ICONQUESTION*/ | 0x00000006L /*MB_CANCELTRYCONTINUE*/));

messageBox.
invoke();

retour = messageBox.
getRetVal();

messageBox.
dispose();

} catch (Throwable e) {
e.
printStackTrace();

}
return retour;

}

}

N'oubliez d'ajouter dans votre classpath la librairie JNative.jar et la classe Greffon.java présente dans le répertoire suivant :
langagelinotte\greffons\org\linotte\greffons\externe

4 - Création de l'archive du greffon
Récupérez le fichier DemoDLL.class généré pour le mettre dans le fichier ZIP : DemoDLL.zip et copiez le dans le répertoire greffons de l'Atelier.

5 - Tester !
Relancez l'Atelier Linotte et tester l'exemple suivant :

Code:

MessageBox :


Exemple :

Rôles :

messager :
:
demodll
Actions :

Affiche messager.
message("Allo Huston ?")
Termine