javaexe - fr

Upload: charlyhernadez

Post on 12-Oct-2015

33 views

Category:

Documents


0 download

TRANSCRIPT

  • JavaExe version 3.2

    par DevWizard

    ([email protected])

    (12 Octobre 2013)

  • Jawaher...

  • 5

    Table des matires

    Prsentation ...................................................................................................................................................................... 7 Historique ......................................................................................................................................................................... 9

    Licence ........................................................................................................................................................................... 13 Licence dutilisation .................................................................................................................................................. 13 Licence de redistribution ........................................................................................................................................... 13 Modifications autorises et non autorises ............................................................................................................... 13

    Utilisation gnrale ........................................................................................................................................................ 15 Cration du .EXE ...................................................................................................................................................... 15

    Les proprits ............................................................................................................................................................ 16 Utilisation de UpdateRsrcJavaExe ............................................................................................................................ 18 Changer licne du .EXE .......................................................................................................................................... 20 Ecran de dmarrage (le Splash Screen) ..................................................................................................................... 20 Cration de raccourcis ............................................................................................................................................... 20

    Lancement en tant quapplication .................................................................................................................................. 21 Nombre dInstances .................................................................................................................................................. 21 Restaurer la session ................................................................................................................................................... 21

    Lancement en tant que service ....................................................................................................................................... 23

    Service Interactif ....................................................................................................................................................... 26

    Lancement en tant que panneau de contrle .................................................................................................................. 27

    Lancement en tant qucran de veille ............................................................................................................................ 29

    Fonctionnalits additionnelles

    Gestion des Evnements Systme ............................................................................................................................. 33

    Gestion de la barre des tches ................................................................................................................................... 37 Gestion de la Base de Registre Windows ................................................................................................................. 41 Ecran dynamique de dmarrage ................................................................................................................................ 45 Gestion de Section Admin/User ................................................................................................................................ 47 Gestion du contrleur de services ............................................................................................................................. 51

    Gestion du Systme ................................................................................................................................................... 55

    Annexes

    Interfaces Java ........................................................................................................................................................... 59 ApplicationManagement ...................................................................................................................................... 59

    ControlPanelManagement .................................................................................................................................... 59

    RegistryManagement ............................................................................................................................................ 60

    ScreenSaverManagement ..................................................................................................................................... 60 SectionManagement ............................................................................................................................................. 61 ServiceControlManagement ................................................................................................................................. 61 ServiceManagement ............................................................................................................................................. 63 SplashScreenManagement .................................................................................................................................... 64 SystemEventManagement .................................................................................................................................... 64 SystemManagement ............................................................................................................................................. 65 TaskbarManagement ............................................................................................................................................ 66

  • 6

    Exemples ................................................................................................................................................................... 69 1 - Application ...................................................................................................................................................... 69 2 - Control Panel ................................................................................................................................................... 69 3 - Service ............................................................................................................................................................. 69

    4 - TrayIcon .......................................................................................................................................................... 69

    5 - Service & TrayIcon ......................................................................................................................................... 70

    6 - System Event ................................................................................................................................................... 70 7 - OneInstance ..................................................................................................................................................... 70 8 - Service & TrayIcon & System Event .............................................................................................................. 70 9 - Registry ........................................................................................................................................................... 70 10 - Test Unicode ................................................................................................................................................. 71

    11 - Restore Session ............................................................................................................................................. 71 12 - Run as Admin 1 ............................................................................................................................................. 71 13 - Run as Admin 2 ............................................................................................................................................. 71 14 - Thread as Admin 1 ........................................................................................................................................ 71 15 - Thread as Admin 2 ........................................................................................................................................ 72

    16 - Dynamic SplashScreen 1 ............................................................................................................................... 72 17 - Dynamic SplashScreen 2 ............................................................................................................................... 72

    18 - Dynamic SplashScreen 3 ............................................................................................................................... 72 19 - ScreenSaver ................................................................................................................................................... 72 20 - SystemManagement ...................................................................................................................................... 73 21 ServiceControlManagement ......................................................................................................................... 73 22 - ServiceControlManagement & Admin ......................................................................................................... 73 23 - Service & TrayIcon & System Event & SCM & Admin .............................................................................. 73

  • 7

    Prsentation

    JavaExe permet de lancer votre application Java partir d'un excutable comme s'il s'agissait d'une

    application Windows, ou dun service systme, ou en tant que Panneau de configuration (Control Panel), ou en tant qucran de veille (ScreenSaver).

    Il est possible de fournir un JRE avec lapplication Java afin que celle-ci fonctionne de faon autonome quelque soit la configuration du systme client.

    Parmi les fonctionnalits de JavaExe, outre les diffrents types de lancement, on peut noter :

    la limitation du nombre dinstance en cours dexcution,

    la restauration automatiquement de lapplication Java aprs un redmarrage systme,

    linterception des vnements systmes de Windows (tel que linsertion ou ljection dun priphrique externe, demande de redmarrage du systme et lautoriser ou non, changement dtat de la session utilisateur, connexion ou dconnection dun rseau, changement dtat de la batterie, ),

    la gestion de la barre des tches (ce qui permet davoir un service interactif),

    la gestion de la base de Registre de Windows,

    possibilit de relancer lapplication Java (ou une partie de celle-ci) en mode Administrateur,

    accs certaines fonctions systmes permettant le redmarrage de Windows, ou sa mise en veille,

    possibilit de contrler les services Windows,

    cran de dmarrage dynamique

    Dans cette documentation, licone reprsente une nouvelle fonctionnalit ou une modification par rapport la version prcdente de JavaExe.

    Limagination est plus importante que la connaissance Albert Einstein

  • 9

    Historique

    3.2 (12 Octobre 2013) :

    o Support des JRE 64bits.

    o Ecran de veille : possibilit de lancer lapplication Java en tant qucran de veille Windows (avec le fichier JavaExe.scr).

    o Possibilit de relancer entirement lapplication Java en mode Admin, de faon contrl dans le code ou via le manifeste de lexcutable.

    o Possibilit de lancer seulement une partie de lapplication Java en mode Admin. o Gestion du contrleur de services : possibilit de grer les services Windows, les supprimer, les

    stopper, rcuprer des informations dtats, changer leur configuration, o Gestion de larrt du PC ou de sa mise en veille, du verrouillage de la session, o Possibilit dinterdire le dclenchement de lcran de veille, lextinction du moniteur ainsi que la mise

    en veille automatique du PC.

    o Ecran de dmarrage dynamique : possibilit de mettre jour en temps rel lcran statique de dmarrage.

    o Ecran de dmarrage statique : prise en compte de format supplmentaire dimage tel que GIF, JPG et PNG.

    o Barre des tches :

    ajout de lattribut MFS_ADMIN pour les entres du menu permettant davoir licone de demande dlvation en mode Admin.

    La mthode taskInit possde dsormais un argument pour savoir si lon se trouve en mode ServiceUI ou pas.

    o Dtection automatique de la proprit RunType selon les fonctionnalits utilises.

    o Service :

    ajout dun argument de contrle, startServiceUI, pour lancer manuellement la partie UI du service interactif.

    Dtection automatique dun changement de configuration depuis la cration du service. Bug majeur pour les services interactifs : si la mthode taskGetInfo ntait pas dclare, la

    partie UI du service ne se lanait pas.

    o Evnements systmes :

    SC_MONITORPOWER : nouvel vnement pour lextinction du moniteur. PBT_APMPOWERSTATUSCHANGE : ntait plus intercept sur un Windows Vista et

    suprieur.

    SC_SCREENSAVE : ntait pas intercept depuis un service. o Ajout darguments JavaExe.exe (et ses drivs) :

    -createShortcut : cration de raccourcis sur le fichier excutable, selon les fonctionnalits

    utilises.

    -deleteShortcut : suppression des raccourcis crs avec -createShortcut

    o UpdateRsrcJavaExe :

    Intgration des fichiers pour JavaExe.scr

    Intgration dun manifeste dans lexcutable pour le mode Admin Ajout darguments : -admin ; -scr ; -img (remplace le -bmp) Si le dplacement des fichiers intgrer se fait sur JavaExe.exe (ou drivs), alors

    UpdateRsrcJavaExe sera automatiquement lanc pour intgrer ces fichiers.

    Bug mineur concernant les arguments reus entre " ou Bug mineur concernant le DragnDrop de fichiers sur UpdateRsrcJavaExe (sur certaines

    versions de Windows et dans certaines conditions de lancement).

    o Bug majeur avec la fonctionnalit isOneInstance lorsque la 1re

    instance de lapplication tait lanc en mode administrateur mais pas les autres instances.

    o Bug mineur lors de la dsinstallation dun service interactif : licone de la barre des tches restait parfois active (sur certaines versions de Windows).

  • 10

    o Bug mineur lorsque JavaExe ne trouvait pas de JRE : le navigateur Internet ne souvrait pas pour pouvoir tlcharger et installer un JRE (ne concernait que certaines versions de Windows).

    3.1 (6 Juin 2012) :

    o Unicode : Gestion totale de lUnicode par JavaExe (sauf pour le nom des classes). o Base de Registre : intgration de fonctions natives accessibles depuis les applications Java.

    o Possibilit de relancer automatiquement lapplication Java aprs un redmarrage du systme. o Barre des tches : ajout de lvnement du click dans la bulle dinfo. o Services Windows :

    Ajout dactions de dfaillance (RESTART, REBOOT), et de lAutomatique Diffr. Modification du lancement de la partie interactive du service.

    o Panneau de contrle : correction dun bug majeur dans linstallation du panneau de contrle partir dun Windows Vista et suprieur.

    o Correction dun bug mineur lorsque le JRE est fourni avec lapplication et que celle-ci sexcute sur un Windows quasiment vierge. La JVM ne trouvait pas le fichier MSVCR71.dll

    o Correction dun bug mineur concernant la taille totale des arguments pass au fichier excutable de lapplication Java (JavaExe.exe renomm).

    o Pour un lancement en tant que Service ou Panneau de contrle, le chemin courant est fix sur celui de

    lapplication Java o se trouve lexcutable (et non plus sur "C:\WINDOWS\system32\" par dfaut).

    3.0.2 (14 Fvrier 2007) :

    o Correction dun bug mineur avec le JRE 1.4 : lorsque lapplication Java se termine avec un System.exit(0) un fichier derreur tait gnr par la JVM. Cette erreur se produisait seulement avec le JRE 1.4.

    o Correction dun bug majeur avec le JRE 1.6 : lorsque le JRE 1.6 tait fourni en locale avec lapplication Java, JavaExe ne trouvait plus la classe principale.

    3.0.1 (30 Octobre 2006) :

    o Correction dun bug mineur dans UpdateRsrcJavaExe : les fichiers associs aux coches taient toujours pris en compte mme si la coche correspondante ntait pas slectionne.

    o Correction dun bug majeur concernant lexemple 7 OneInstance : le rsultat de la mthode isOneInstance ntait pas toujours pris en compte dans certaine version de Windows XP, et lexemple 8 - Service & TrayIcon & System Event : la partie interactive ne se lanait pas dans tous les cas.

    o Le numro de version minimum requis de Java est indiqu dans le message dalerte si aucun JRE nest trouv.

    3.0 (11 Septembre 2006) :

    o Gestion dune application Java en tant que Panneau de contrle (avec le fichier JavaExe.cpl) o Gestion de la barre des tches et de son icne.

    o Gestion des vnements systmes.

    o Affichage dun cran de dmarrage avant le lancement de lapplication Java. o Possibilit de contrler le nombre dinstance en cours dexcution de la mme application. o Renommage de loutil MergeICO en UpdateRsrcJavaExe. o Properties :

    Ajout de URL_InstallJRE, PathJRE, PathBrowser, Display_BoxInstall

    RunAsService : est renomme en RunType

    RunType : ajout dun type (2) pour le mode ControlPanel. ClassDirectory : est mis par dfaut resource

    o Lecture du manifest du .jar principal pour trouver automatiquement la classe principale.

    2.0 (16 Novembre 2003) :

    o Lancement de lapplication Java directement avec la JVM si possible. Sinon lancement via la commande java.exe

    o Possibilit de lancer lapplication comme un service Windows. o Cration dun 2me fichier excutable nomm JavaExe_console.exe pour lancer lapplication avec une

    console DOS.

  • 11

    o Ajout de quelques proprits : ClassDirectory, PersonalOptions, ResourceDirectory, RunAsService

    o La proprit JREversion signifie maintenant la version minimum au lieu de la version stricte.

    1.3 (21 Avril 2003) :

    o Correction d'un bug potentiel dans JavaExe.exe (un pb li aux "\" dans la variable de properties

    PersonalClasspath)

    1.2 (4 Novembre 2002) :

    o Correction d'un bug dans MergeICO.exe (le dplacement d'une icne sur MergeICO.exe n'tait pas

    pris en compte)

    o Lancement de l'application Java avec le paramtre java.library.path fix ".;.\resource\", vous

    permettant ainsi de mettre vos ventuelles DLL (pour les mthodes natives par exemple) dans le

    mme rpertoire que votre application ou dans le rpertoire "resource".

    1.1 (5 Octobre 2002) :

    o Ajout d'une proprit, Main Class, dans le fichier JavaExe.properties. Cette proprit est ncessaire

    lorsque la classe principale se trouve dans un package.

    1.0 (28 Aot 2002) : Naissance de JavaExe.

  • 13

    Licence

    Le terme JavaExe regroupe les fichiers excutables JavaExe.exe, JavaExe_console.exe, JavaExe.cpl,

    JavaExe.scr (et leur driv, cest--dire leur version renomme selon le nom de la classe ou .jar principal) ainsi que le fichier UpdateRsrcJavaExe.exe.

    Licence dutilisation

    JavaExe est un logiciel gratuit et ce titre vous tes autoris lutiliser de faon personnel, ou dans un contexte professionnel ou ducatif (universitaire, scolaire, ).

    Licence de redistribution

    Vous tes galement autoris redistribuer JavaExe avec votre application Java, quelle soit commerciale ou gratuite.

    Modifications autorises et non autorises

    Les seules modifications autorises sont celles indiques dans cette documentation, ou lajout de ressources

    telles que RT_MANIFEST, RT_VERSION, Il est galement autoris dajouter une signature numrique aux fichiers excutables de JavaExe ou de ses

    drivs (except UpdateRsrcJavaExe.exe) laide dutilitaires prvus cet effet.

    En revanche, vous ntes pas autoris modifier le code binaire (cest--dire la partie excutable) des fichiers de JavaExe.

  • 15

    Utilisation gnrale

    Cration du .EXE

    Avant tout, il est important de noter quil existe deux versions dun excutable JavaExe : une version dite 32bits (ou x86) et une autre 64bits (ou x64). La version 32bits est prvue pour des Windows 32bits et fonctionne

    aussi sur un systme 64bits, mais avec un JRE 32bits dans les deux cas. Lautre version, la 64bits, ne fonctionne que sur des systmes 64bits et uniquement avec un JRE 64bits.

    Pour obtenir un fichier excutable de votre application Java, il suffit tout simplement de copier le fichier

    JavaExe.exe dans votre rpertoire contenant l'application Java, puis lui donner le mme nom que votre classe ou jar

    principal. JavaExe.exe est fourni avec une version console, JavaExe_console.exe, permettant davoir la console DOS pour dventuels sortie crans. Tout ce qui sera dit sur JavaExe.exe sapplique JavaExe_console.exe.

    Exemple :

    Si ma classe principale se nomme MyApp.class, je copie puis renomme JavaExe.exe en MyApp.exe Si ma classe principale est contenue dans un .jar, celui-ci devra aussi sappeler MyApp.jar.

    Les .class ou .jar doivent se trouver dans le mme rpertoire que le .EXE ou dans un rpertoire nomm par

    dfaut resource crer au mme niveau que le .EXE. Toutefois ce rpertoire peut tre dfini spcifiquement en

    modifiant la proprit ResourceDirectory (voir le paragraphe intitul Les Proprits).

    Exemple :

    Si MyApp.exe se trouve dans le rpertoire "D:\Dev\", alors MyApp.class ou MyApp.jar se trouvent :

    soit dans "D:\Dev\" soit dans le rpertoire "D:\Dev\resource\"

    JavaExe reste toutefois dpendant d'un JDK ou d'un JRE, il est ncessaire quau moins un Java Runtime Environment (JRE) soit install. Si JavaExe ne dtecte pas de JDK ou JRE, il ouvrira un browser sur le site de Sun

    pour tlcharger le JRE courant.

    Vous pouvez fournir un JRE avec votre application (le JRE totalement dcompact et non pas le fichier

    dinstallation). Dans ce cas, vous devez le mettre dans un rpertoire nomm jre , lui-mme dans le rpertoire du .EXE ou dans le rpertoire resource .

    Exemple :

    Soit la configuration suivante de MyApp.exe :

    le .exe se trouve dans "D:\Dev\" un JRE est fourni avec lapplication et se trouve dans le rpertoire

    "D:\Dev\resource\jre"

  • 16

    Alors MyApp.exe se lancera toujours avec ce JRE l quelque soit celui install sur la machine cliente, mme sil ny en a aucun dinstall.

    Les proprits

    Une fois le fichier excutable cr, il est possible dy associer des proprits pour dfinir la manire dont lapplication Java sera lance ou pour spcifier certains paramtres ncessaires son fonctionnement.

    Ces proprits sont mettre dans un fichier texte portant le mme nom que le fichier excutable, mais avec

    lextension .properties . Une proprit sera dfini par un nom suivi de sa valeur, de la forme : nom = valeur . Toutefois ce fichier pourra tre intgr au .exe en utilisant lutilitaire UpdateRsrcJavaExe.

    Exemple :

    Si MyApp.exe se trouve dans le rpertoire "D:\Dev\", alors MyApp.properties peut se trouver dans ce mme rpertoire ou dans "D:\Dev\resource\". Dans cet exemple, MyApp.properties contient : JRE version = 1.2 Personal Classpath = .\resource\classes12.zip MainArgs = "test" 123 MyApp sera alors lanc avec Java 1.2 (ou plus), et la commande en ligne correspondante est : java -classpath .;.\resource\MyApp.jar;.\resource\classes12.zip MyApp "test" 123

    Voici la liste de ces proprits :

    JRE version (ou JREversion) = pour spcifier la version minimum de java : 1.4 ; 1.3 ; ... Si un JRE est fourni avec lapplication, cette proprit sera ignore. exemple :

    JREversion = 1.3 JavaExe doit pouvoir trouver au moins la version 1.3 de Java pour

    lancer lapplication

    Run Type (ou RunType) = pour spcifier comment lapplication doit tre lanc : 0 = en tant que simple application (valeur par dfaut)

    1 = en tant que service

    2 = en tant que Panneau de configuration (ControlPanel)

    3 = en tant qucran de veille (ScreenSaver) exemple :

    RunType = 1 JavaExe lancera lapplication en tant que Service

    Toutefois le RunType peut tre dtermin automatiquement selon les fonctionnalits de JavaExe

    utilises dans lapplication Java :

    o si serviceGetInfo() ou serviceInit() est dclare, alors RunType = 1 o si le fichier JavaExe.cpl est utilis, alors RunType = 2 o si le fichier JavaExe.scr est utilis et scrsvPaint() est dclare, alors RunType = 3

  • 17

    Run As Service (ou RunAsService) = cette proprit ne devrait plus tre utilis. A remplacer par RunType = 0 ou RunType = 1

    Main Class (ou MainClass) = pour indiquer le nom complet de votre classe principale, dans le cas o JavaExe ne pourrait pas la trouver daprs seulement le nom de lexcutable ou du Manifest dans le .jar. Le seul cas o il est ncessaire de spcifier cette proprit sera lorsque le nom du .exe et du

    .jar ne reflte pas le nom de la classe principale et aucun Manifest nest trouv. exemple :

    MainClass = com.toto.myClass

    Main Args (ou MainArgs) = ces valeurs seront passes en arguments la mthode main de votre classe principale, dans la variable (String[] args).

    exemple :

    MainArgs = 123 aze largument args[] de la mthode main contiendra : [0] = 123 et [1] = aze .

    Personal Options (ou PersonalOptions) = permet de spcifier les options de lancement propres la JVM.

    exemple :

    PersonalOptions = -Xms64m -Xverify:none

    Personal Classpath (ou PersonalClasspath) = si votre application besoin de .jar, .zip ou .class supplmentaires ou se trouvant dans d'autres rpertoires. Plusieurs fichiers ou rpertoires peuvent

    tre spcifis en les sparant dun point-virgule. exemple :

    PersonalClasspath = D:\Dev\lib\lib.jar ; C:\Application\resource\

    Resource Directory (ou ResourceDirectory) = pour indiquer le rpertoire ressource contenant les JAR, les DLL, les images, les fichiers de proprits,. Si ce paramtre est absent, le rpertoire nomm resource situ au mme niveau que le .EXE sera utilis par dfaut.

    exemple :

    ResourceDirectory = .\bin\ spcifie ce rpertoire o les .jar principaux doivent tre

    recherchs par dfaut.

    Class Directory (ou ClassDirectory) = pour indiquer le ou les rpertoires (spars par ;) scanner rcursivement afin dy trouver tous les .jar et .zip mettre dans le ClassPath. Cette proprit contiendra doffice au moins le rpertoire resource permettant ainsi la prise en compte de tous les .jar contenu dans ce rpertoire sans devoir les spcifier un par un dans le classpath.

    exemple :

    ClassDirectory = .\lib\ ; D:\Dev\lib\ ajoute ClassPath tous les .jar et .zip trouvs dans ces 2

    rpertoires et leurs sous-rpertoires respectifs, ainsi que dans le rpertoire resource .

    Path JRE (ou PathJRE) = chemin du JRE sil est fourni avec lapplication. Par dfaut il sera recherch dans le rpertoire jre au mme niveau que le .exe ou dans le rpertoire resource .

    Path Browser (ou PathBrowser) = chemin du browser utiliser pour linstallation ventuel dun JRE (par dfaut cest le chemin d'Internet Explorer).

    Display BoxInstall (ou Display_BoxInstall) = pour indiquer si un message doit tre affich lorsque JavaExe ne trouve pas de JRE ou JDK, et demandant si lon dsire installer un JRE ou quitter lapplication. Seulement deux valeurs sont acceptes : 0 ou 1.

  • 18

    1 = affiche la boite de dialogue pour installer ou non le JRE (valeur par dfaut)

    0 = naffiche aucun message, et entame la procdure dinstallation en ouvrant un browser sur lURL adquate.

    URL InstallJRE (ou URL_InstallJRE) = permet dindiquer une URL sur laquelle JavaExe ouvrira un browser dans le cas o aucun JRE ou JDK ne sera trouv au lancement de lapplication. Si cette proprit n'est pas indique, cest l'URL sur java.sun.com qui sera pris en compte.

    Il peut y avoir d'autres proprits si votre application utilise ce mme fichier pour ses besoins propres.

    Utilisation de UpdateRsrcJavaExe

    JavaExe est fourni avec un autre programme, UpdateRsrcJavaExe, permettant de changer l'icne de votre

    MyApp.exe, de dfinir un cran de dmarrage (le Splash Screen), ou encore dintgrer le fichier des proprits dans le .exe, dans le .cpl (pour lutilisation de lapplication Java en tant que ControlPanel), ou dans le .scr (pour une utilisation en tant qucran de veille).

    Lintgration de ces fichiers peut se faire de quatre faons :

    En cliquant sur le bouton du type de fichier que lon souhaite ouvrir.

    En dplaant les fichiers voulus sur cette fentre dUpdateRsrcJavaExe.

    En ligne de commande.

    En dplaant les fichiers voulus sur JavaExe.exe (ou la version renomme en MyApp.exe), mais condition quUpdateRsrcJavaExe soit prsent et dans le mme dossier que JavaExe.exe (ou MyApp.exe).

  • 19

    Les types de fichiers pris en compte :

    .BMP ; .GIF ; .JPG ; .PNG : permet de dfinir un cran de dmarrage lapplication Java.

    .ICO : permet de changer licne du fichier .exe ou du .scr

    .PROPERTIES : permet dintgrer les proprits utilises par JavaExe.

    .EXE : permet de spcifier le .exe driv de JavaExe.exe (renomm ou pas) qui recevra les fichiers intgrer.

    .CPL : permet de spcifier le .cpl driv de JavaExe.cpl (renomm ou pas) qui recevra les fichiers intgrer (seul le fichier de proprits peut tre intgr un .cpl).

    .SCR : permet de spcifier le .scr driv de JavaExe.scr (renomm ou pas) qui recevra les fichiers intgrer (seuls les fichiers dicne et de proprits peuvent tre intgrs un .scr).

    Aprs avoir charg un fichier intgrer, il est possible den voir les caractristiques en cliquant sur son

    bouton .

    Lorsquau moins un fichier source et un fichier destination seront chargs dans UpdateRsrcJavaExe, il sera

    alors possible de cliquer sur le bouton pour excuter lintgration des fichiers dont la case sera coche.

    Si UpdateRsrcJavaExe est utilis en ligne de commande, voici la liste des arguments reconnus :

    -run : permet de lancer lintgration sans que la fentre ait besoin de souvrir si tous les paramtres ncessaires sont renseigns.

    -exe=fichier : pour indiquer le nom dun fichier .exe qui recevra les fichiers intgrer. Ce fichier excutable doit tre un driv de JavaExe.exe.

    -cpl=fichier : pour indiquer le nom dun fichier .cpl qui recevra les fichiers intgrer. Ce fichier doit tre un driv de JavaExe.cpl.

    -scr=fichier : pour indiquer le nom dun fichier .scr qui recevra les fichiers intgrer. Ce fichier doit tre un driv de JavaExe.scr.

    -ico=fichier : permet dindiquer le nom dune icne qui sera intgre au .exe ou .scr

    -img=fichier : permet dindiquer le nom dune image au format BMP, GIF, JPG ou PNG qui sera intgre au .exe et servant dcran de dmarrage.

    -bmp=fichier : mme fonctionnement que img, mais ne devrait plus tre utilis.

    -prp=fichier : pour spcifier le nom dun fichier .properties qui sera intgr.

    -admin=true (ou 1) : intgre un manifeste pour lancer lexcutable en mode Admin.

    -admin=false (ou 0) : intgre un manifeste pour une excution normale.

    -admin : quivalent -admin=true .

  • 20

    Changer licne du .EXE

    Il est possible de modifier licne du fichier excutable pour lancer votre application Java. Tous les formats dicnes sont accepts par JavaExe.

    Pour ce faire il suffit dutiliser UpdateRsrcJavaExe, fourni avec JavaExe, soit en ligne de commande avec les arguments -ico=fichier dicne et -exe=fichier excutable, soit en dplaant les fichiers de licne et de lexcutable sur la fentre de UpdateRsrcJavaExe (cf. le paragraphe prcdent pour son utilisation).

    Ecran de dmarrage (le Splash Screen)

    Pour dfinir un cran de dmarrage votre application Java il suffit davoir limage au format BMP, GIF, JPG ou PNG et dutiliser le programme UpdateRsrcJavaExe, soit en ligne de commande avec les arguments -img=fichier dimage et -exe=fichier excutable, soit en dplaant les fichiers de limage et de lexcutable sur la fentre de UpdateRsrcJavaExe (cf. le paragraphe traitant de cet utilitaire).

    Cet cran de dmarrage ainsi dfini sera statique, cest--dire que le mme cran sera affich pendant un certain temps. Toutefois, pendant que cet cran est affich, il est possible de le modifier intervalle de temps rgulier

    pour lui donner un aspect dynamique ou dy associer automatiquement une barre de progression (cf. le chapitre Ecran dynamique de dmarrage page 45).

    Cration de raccourcis

    Il est possible de crer automatiquement des raccourcis sur les fichiers excutables JavaExe selon les

    fonctionnalits utilises par lapplication Java. Pour ce faire, il suffit dappeler en ligne de commande le driv de JavaExe (cest--dire sa version

    renomme en MyApp.exe) et dy passer les arguments suivants :

    -createShortcut : permet de crer les raccourcis ncessaires selon lutilisation : o Service :

    *-install.lnk et *-delete.lnk : pour installer et supprimer le service.

    *-start.lnk : pour dmarrer le service, si le STOP est autoris ou sil nest pas automatique. *-stop.lnk : pour stopper le service, si le STOP est autoris.

    *-runUI.lnk : pour lancer la partie UI du service, sil est interactif.

    o Panneau de configuration : *-install.lnk et *-delete.lnk : pour linstaller ou le supprimer.

    o Ecran de veille : *-install.lnk et *-delete.lnk : pour installer et supprimer lcran de veille. *-config.lnk : pour ouvrir lcran de paramtrage, sil existe.

    -deleteShortcut : permet de supprimer les raccourcis crs avec la commande -createShortcut.

  • 21

    Lancement en tant quapplication

    Pour lancer votre programme Java en tant quapplication Windows, vous navez rien de spcial faire si ce nest ce qui a dj t dis dans le chapitre Utilisation gnrale : Il vous suffit de renommer JavaExe.exe en lui donnant le mme nom que votre classe ou .jar principal.

    Nombre dInstances

    Il est galement possible de contrler le nombre dinstance de lapplication Java, en autorisant ou pas un seul exemplaire en cours dexcution. Pour cela votre classe principale doit contenir une mthode statique nomme isOneInstance et devra avoir la signature suivante :

    public static boolean isOneInstance (String[] args);

    Les arguments envoys cette mthode sont ceux qui seront envoy la mthode main. Si isOneInstance

    retourne TRUE alors une seule instance de lapplication sera lance. Lors du lancement de lapplication, si cest la premire instance en cours dexcution, cette mthode ne sera

    pas appele mais la mthode main avec ses ventuels arguments.

    En revanche, si ce nest pas la premire excution, la mthode isOneInstance de la premire instance de lapplication sera dabord appele avec les arguments que la mthode main aurait reus.

    Si isOneInstance renvoie TRUE le processus sarrte l et linstance en cours de lancement sera annule. Si

    isOneInstance renvoie FALSE le processus de lancement continue, une nouvelle instance de lapplication sera excute et sa mthode main sera appele avec les ventuels arguments.

    Restaurer la session

    Lors dun redmarrage du systme si lapplication Java tait en cours dexcution, celle-ci peut indiquer JavaExe de conserver ou non le contexte actuel de lapplication afin de le restituer en relanant automatiquement lapplication avec le systme.

    Le contexte conserv correspond aux arguments pass lapplication ainsi quaux donnes de la session fournies par lapplication. Pour grer cette restauration de session, il suffit de dfinir les mthodes statiques suivantes dans la classe principale :

    public static boolean sessionIsRestore();

    La dclaration de cette mthode est facultative. Elle permet dindiquer JavaExe de relancer ou non lapplication aprs le redmarrage du systme.

    Si elle renvoie TRUE, lapplication sera relance mme si aucune donne de contexte nest fournie par les mthodes sessionGetMainArgs() et sessionGetData().

    En revanche si la mthode renvoie FALSE, lapplication ne sera pas relance quelque soit la dclaration ou valeurs des deux mthodes prcdemment cites.

    Pour finir, si la mthode nest pas dclare, lapplication sera relance si au moins lune des deux mthodes prcdentes renvoie une valeur.

  • 22

    public static String[] sessionGetMainArgs();

    Cette mthode, facultative, fournie JavaExe des arguments supplmentaires qui seront passs

    la mthode main lorsque lapplication sera relance. Ces arguments sont ajouts ceux existants si lapplication avait t lance avec des arguments.

    public static Serializable sessionGetData();

    Cette mthode, si elle est dclare, fournie JavaExe des donnes qui seront restitues

    lapplication Java aprs avoir t relance avec le systme. Cela permet de conserver un tat de lapplication pendant le redmarrage de Windows.

    public static void sessionSetData (Serializable data);

    Cette mthode est appele automatiquement par JavaExe aprs que lapplication ait t relance et avant lappel de la mthode main, avec les donnes de contexte fournies par la mthode sessionGetData().

  • 23

    Lancement en tant que service

    Pour que votre application Java soit lance en tant que service systme, il suffit de crer le .exe (voir le

    chapitre Utilisation gnrale ) et de spcifier dans le fichier .properties, la proprit RunType = 1 .

    Il faut toutefois noter une restriction : le service ne pourra pas se lancer en version console avec

    JavaExe_console.

    Au lancement de lapplication plusieurs cas de figure peuvent se prsenter :

    1. la classe principale est prvue pour fonctionner comme une application normale, cest--dire que le point

    dentr est main().

    2. lapplication Java contient les mthodes dfinies pour JavaExe servant dinterface entre la gestion du service Windows et lapplication (cf. plus bas, ainsi quen Annexe linterface JavaExe_I_ServiceManagement).

    Et pour chacun de ces cas, lapplication-service peut tre lance directement avec la JVM ou via la commande java.exe. Cela nous fait donc 4 cas de lancement tudier.

    1. main() + JVM => le point dentr tant main(), celui-ci ne sera appel que pour lancer le service, et ce dernier ne pourra tre stopp quen redmarrant le systme.

    2. main() + java.exe => idem que prcdemment.

    3. interface + JVM => les mthodes dfinies pour servir dinterface seront appeles individuellement selon

    les besoins. La mthode main() ne sera jamais appele.

    4. interface + java.exe => puisque le lancement seffectue avec java.exe, le point dentr sera alors main() et nous retombons dans la configuration du cas n 2.

    Dans le cas n 3, si pour une quelconque raison on ne peut pas appeler directement la JVM, on devra passer

    par java.exe (cas n4) et donc la mthode main() sera le seul point dentr. Aussi, il est important de ne pas oublier

    dappeler la mthode serviceInit() depuis main(). Pour plus de dtails voir lexemple fourni avec cette documentation.

    Il est possible de lancer directement des oprations sur le service, comme son installation, sa suppression, son

    dmarrage ou son arrt, sans passer par les ventuels boites de dialogue de confirmation.

    Pour cela il suffit de lancer JavaExe.exe (cest--dire MyApp.exe) avec comme argument :

    -installService : pour forcer son installation

    -deleteService : pour forcer sa suppression

    -startService : pour forcer son dmarrage

    -stopService : pour forcer son arrt

    -startServiceUI : pour lancer sa partie UI si le service est interactif

    Mthodes servant dinterface : JavaExe_I_ServiceManagement

    Ces mthodes sont directement appeles par JavaExe :

    1. public static boolean serviceIsCreate (); 2. public static boolean serviceIsLaunch (); 3. public static boolean serviceIsDelete ();

  • 24

    4. public static boolean serviceInit (); 5. public static void serviceFinish ();

    6. public static String[] serviceGetInfo ();

    7. public static boolean serviceControl_Pause (); 8. public static boolean serviceControl_Continue (); 9. public static boolean serviceControl_Stop (); 10. public static boolean serviceControl_Shutdown ();

    11. public static void serviceDataFromUI (Serializable data); 12. public static boolean serviceIsDataForUI (); 13. public static Serializable serviceDataForUI ();

    Ces mthodes sont dclarer soit dans la classe principale, soit dans une classe de mme nom mais post-fixe

    par _ServiceManagement . Par exemple, si ma classe principale sappelle MyApp, alors ces mthodes peuvent se trouver indiffremment dans MyApp.class ou dans MyApp_ServiceManagement.class.

    Il nest pas ncessaire de toutes les dclarer.

    1. serviceIsCreate : Cette mthode est appele au lancement de JavaExe.exe (cest--dire MyApp.exe) si le

    service nest pas encore install. Le service sera install seulement si cette mthode renvoie TRUE. Si cette mthode nest pas dclare, une bote de dialogue Windows souvrira pour demander lutilisateur sil souhaite ou non installer le service. La mthode serviceGetInfo sera galement appele pour obtenir certaines

    caractristiques ncessaires la cration du service.

    2. serviceIsLaunch : Cette mthode est appele aprs linstallation du service. Celui-ci sera immdiatement

    lanc si la mthode renvoie TRUE. Une bote de dialogue Windows souvrira, si cette mthode nest pas dclare, pour demander lutilisateur sil souhaite ou non lancer le service.

    3. serviceIsDelete : Cette mthode sera appele au lancement de JavaExe.exe (cest--dire MyApp.exe) si le

    service est dj install. Le service sera supprim seulement si cette mthode renvoie TRUE. Si cette mthode

    nest pas dclare, une bote de dialogue Windows souvrira pour demander si lutilisateur souhaite ou non supprimer le service. Toutefois si le service a t cr en spcifiant que son arrt ntait pas autoris (cf. la mthode serviceGetInfo), le service ne sera effectivement supprim quau redmarrage du systme.

    4. serviceInit : Cette mthode est appele lorsque le service est lanc, que ce soit manuellement ou

    automatiquement. La mthode doit renvoyer TRUE si et seulement si lapplication est active et en cours

    dexcution. Si elle renvoie FALSE ou si elle ne rpond pas avant un dlai de 30 secondes, Windows considrera que le service a chou la tentative de dmarrage et lancera alors les actions en cas dchec sils ont t dfinis (cf. la mthode serviceGetInfo). Si la mthode nest pas dclare, le service sera lanc immdiatement sans condition.

    5. serviceFinish : Cette mthode sera appele lorsque le service aura t arrt soit manuellement, soit automatiquement avec larrt du systme.

    6. serviceGetInfo : Cette mthode est appele au moment de la cration du service afin dobtenir certaines informations complmentaires, tels que :

    Nom complet du service par opposition au nom court qui est le nom de lexcutable.

    Description du service.

    1 ou TRUE pour indiquer que le service sera lanc automatiquement avec le systme.

    1 ou TRUE pour indiquer que le service peut tre arrt manuellement.

    Nom du fichier excuter lorsque le service a chou. Les fichiers .BAT peuvent ne pas sexcuter correctement sur Windows 2000.

    Arguments fournir au programme qui sexcute lors dun chec.

  • 25

    Liste de noms (nom court), de services, spars par une tabulation (\t) ou un slash (/), dont ce service dpend. Cest--dire que Windows sassurera que ces services sont lancs avant de lancer celui-ci.

    Liste des actions en cas dchec du service. Les valeurs possibles sont : NONE, RESTART, REBOOT ou RUN correspondant respectivement Ne rien faire , Relancer le service ,

    Redmarrer le systme ou Excuter un programme . Cette liste peut comporter plusieurs

    valeurs spares par un slash (/). Par exemple : RESTART / RESTART / REBOOT, le systme relancera le service pour le 1

    er et le 2

    ime chec et redmarrera Windows en cas de 3

    ime chec. Le

    nombre de valeurs nest pas limit mais Windows naffichera que les 3 premires. Nanmoins toutes les valeurs de la liste seront effectivement prises en compte par le systme.

    Liste des dlais (en secondes, et spars par un slash /) correspondant aux actions dclencher en cas dchec. Cette liste doit comporter autant de valeurs que la liste dactions. Par exemple 10 / 20 / 30 correspondra une attente de 10 secondes avant de dclencher la premire action, puis

    une attente de 20 secondes avant la deuxime,

    Dlai (en secondes) avant la remise zro du compteur des actions dchec. La valeur -1 indique quil ny aura pas de remise zro. Par exemple, une valeur de 3600 signifie quau bout dune heure le compteur dchec est remis zro et lors de la prochaine dfaillance cest la 1ire action de la liste qui sera dclenche.

    Message qui sera affich sur les ordinateurs connects celui-ci lorsque laction REBOOT est dclenche en cas dchec du service.

    1 ou TRUE pour indiquer que le service sera lanc en diffr. Cet attribut est applicable seulement si le service est dfini pour tre lanc automatiquement avec le systme. Le mode

    diffr permet dindiquer Windows de lancer le service aprs tous les services automatiques (non diffrs). Cette fonctionnalit nest disponible qu partir de Windows Vista.

    Cette mthode renvoie un tableau de String dont les lments correspondent respectivement ceux

    cits prcdemment. Si cette mthode nest pas dfinie, toutes ces informations seront vides, le lancement sera automatique (non diffr) et larrt ne sera pas autoris. Cette mthode peut tre appele plusieurs fois par JavaExe.

    Cette mthode sera appele toutes les 30 secondes pendant lexcution du service afin de dtecter automatiquement dventuels changements de configuration par rapport celle renvoye par cette mme mthode lors de la cration du service. Si un changement est dtect, la nouvelle configuration sera applique

    sans que le service ne soit arrt.

    7. serviceControl_Pause : Cette mthode est appele lorsque Windows tente de mettre en pause le service.

    Celui-ci sera effectivement en pause si la mthode renvoie TRUE avant un dlai de 30 secondes. Si la mthode

    nest pas dclare, le service sera mis en pause immdiatement.

    8. serviceControl_Continue : Cette mthode est appele lorsque Windows tente de relancer le service mise en

    pause. Celui-ci sera effectivement actif si la mthode renvoie TRUE avant un dlai de 30 secondes. Si la

    mthode nest pas dclare, le service sera relanc immdiatement.

    9. serviceControl_Stop : Cette mthode est appele lorsque Windows tente de stopper le service. Celui-ci sera

    effectivement stopp si la mthode renvoie TRUE avant un dlai de 30 secondes. Aprs larrt du service, la mthode serviceFinish sera finalement appele. Si la mthode nest pas dclare, le service sera arrt immdiatement.

    10. serviceControl_Shutdown : Cette mthode est appele lorsque Windows est arrt ou redmarr. Elle a le mme comportement que serviceControl_Stop.

  • 26

    Service Interactif

    Un service Windows ne peut plus tre directement interactif avec le Bureau depuis au moins un Windows

    Vista pour des raisons de scurit (cela tait encore possible jusquau Windows XP). La solution est de bien sparer la partie service proprement dit de sa partie interactive (fentre, bote de

    dialogue, interaction avec lutilisateur, ). La 1re partie sera toujours lance en tant que service, alors que la seconde sera lance en tant quapplication Windows dans le contexte de lutilisateur courant. Il sagira donc de deux processus diffrents qui devront communiquer entre eux.

    JavaExe gre automatiquement ces deux parties et leur communication, pour changer des donnes ou des

    actions effectuer. Par exemple, puisque le service ne peut pas afficher lui-mme un message derreur, il signalera sa partie interactive quelle doit afficher ce message derreur. Inversement, la partie interactive peut envoyer des demandes dactions effectuer par le service selon les choix de lutilisateur.

    Les 3 mthodes suivantes sont utilises pour les services qui interagissent avec le Bureau. Pour quun service soit reconnu comme Interactif, il suffit que votre application Java intgre la gestion de la barre de tche (cf. le

    chapitre Gestion de la barre des tches page 37). Le service ne peut pas communiquer directement avec le

    Bureau, il devra passer par des mthodes prvues cet effet :

    11. serviceDataFromUI (Serializable data) : Cette mthode sera appele par la partie interactive du service avec en argument un objet traiter par le service.

    12. serviceIsDataForUI : Cette mthode devra renvoyer TRUE si un objet est disponible pour la partie interactive.

    13. serviceDataForUI : Cette mthode renvoie un objet pour la partie interactive.

    A ces trois mthodes correspond leur contrepartie dans le TaskbarManagement. Voir le chapitre Gestion de

    la barre des tches pour le dtail de ces mthodes, ainsi que linterface JavaExe_I_TaskbarManagement en Annexe.

    Il est important de comprendre quil ne doit pas y avoir de lien direct entre les classes du service proprement dit et les classes de sa partie interactive avec le Bureau. Si cela devait toutefois arriver, il sagira de deux instances diffrentes de la mme classe et donc avec des donnes diffrentes.

    Voici un schma rsumant la structure dun service interactif :

    Bien entendu, du point de vue du dveloppeur Java tout ceci est transparent. Il devra simplement veiller ce

    que ses classes de la partie interactive ne fasse pas rfrence aux classes de la partie noyau, et vice-versa.

    JavaExe_I_ServiceManagement

    Classes du noyau du

    service

    JavaExe_I_TaskbarManagement

    JavaExe

    Classes de la partie

    interactive du service

  • 27

    Lancement en tant que Panneau de contrle

    Pour que votre application Java soit reconnu comme un Panneau de contrle, il suffit de crer le .exe (voir le

    chapitre Utilisation gnrale ) et de spcifier dans le fichier .properties, la proprit RunType = 2 .

    JavaExe est fourni aussi avec un autre type de fichier, le JavaExe.cpl, qui devra tre renomm comme pour

    le .exe. Cest ce fichier qui sera reconnu comme un panneau de contrle par Windows.

    Il est possible de lancer directement son installation, ou sa suppression, sans passer par les ventuels boites de

    dialogue de confirmation.

    Pour cela il suffit de lancer JavaExe.exe (cest--dire MyApp.exe) avec comme argument :

    -installCPL : pour forcer son installation

    -deleteCPL : pour forcer sa suppression

    Mthodes servant dinterface : JavaExe_I_ControlPanelManagement

    Ces mthodes sont directement appeles par JavaExe :

    public static boolean cplIsCreate ();

    public static boolean cplIsDelete ();

    public static String[] cplGetInfo ();

    public static void cplOpen ();

    Ces mthodes sont dclarer soit dans la classe principale, soit dans une classe de mme nom mais post-fixe

    par _ControlPanelManagement . Par exemple, si ma classe principale sappelle MyApp, alors ces mthodes peuvent se trouver indiffremment dans MyApp.class ou dans MyApp_ControlPanelManagement.class.

    Il nest pas ncessaire de toutes les dclarer.

    1. cplIsCreate : Cette mthode est appele au lancement de JavaExe.exe (cest--dire MyApp.exe) si le

    panneau de contrle nest pas encore install. Il sera install seulement si cette mthode renvoie TRUE. Si cette mthode nest pas dclare, une bote de dialogue Windows souvrira pour demander lutilisateur sil souhaite ou non installer le panneau de contrle. La mthode cplGetInfo sera galement appele pour obtenir

    certaines caractristiques ncessaires la cration du panneau de contrle.

    2. cplIsDelete : Cette mthode sera appele au lancement de JavaExe.exe (cest--dire MyApp.exe) si le

    panneau de contrle est dj install. Il sera supprim seulement si cette mthode renvoie TRUE. Si cette

    mthode nest pas dclare, une bote de dialogue Windows souvrira pour demander si lutilisateur souhaite ou non supprimer le panneau de contrle.

    3. cplGetInfo : Cette mthode est appele au moment de la cration du panneau de contrle afin dobtenir certaines informations complmentaires, tels que :

    Nom.

    Description.

    Ses catgories dappartenance ( partir de la version XP de Windows). Si vous voulez faire figurer votre panneau de contrle dans plusieurs catgories, vous devrez sparer chaque valeur par une

  • 28

    virgule (,). Voir en Annexe linterface JavaExe_I_ControlPanelManagement pour la liste des ces catgories.

    Cette mthode renvoie un tableau de String dont les lments correspondent respectivement ceux cits

    prcdemment. Si cette mthode nest pas dfinie, toutes ces informations seront vides et le nom sera celui de lexcutable.

    4. cplOpen : Cette mthode sera appele louverture du panneau de contrle. Si cette mthode nest pas dclare, cest la mthode main qui sera appel.

  • 29

    Lancement en tant qucran de veille

    Pour que votre application Java soit reconnu comme un cran de veille (ScreenSaver), il suffit de crer le .exe

    (voir le chapitre Utilisation gnrale ) et de spcifier dans le fichier .properties, la proprit RunType = 3 .

    JavaExe est fourni aussi avec un autre type de fichier, le JavaExe.scr, qui devra tre renomm comme pour

    le .exe. Cest ce fichier qui sera reconnu comme un cran de veille par Windows.

    Il est possible de lancer directement son installation, ou sa suppression, sans passer par les ventuels boites de

    dialogue de confirmation.

    Pour cela il suffit de lancer JavaExe.exe (cest--dire MyApp.exe) avec comme argument :

    -installSCR : pour forcer son installation

    -deleteSCR : pour forcer sa suppression

    -configSCR : pour forcer louverture de lcran de paramtrage, sil existe.

    Mthodes servant dinterface : JavaExe_I_ScreenSaverManagement

    Ces mthodes sont directement appeles par JavaExe :

    public static boolean scrsvIsCreate ();

    public static boolean scrsvIsDelete ();

    public static String[] scrsvGetInfo ();

    public static void scrsvInit ();

    public static void scrsvFinish ();

    public static void scrsvOpenConfig ();

    public static void scrsvPaint (Graphics2D g, int wScr, int hScr);

    public static boolean scrsvIsExitByKey (int keycode, boolean isUp);

    public static boolean scrsvIsExitByMouse (int x, int y, int nbClick, int button, boolean isUp);

    Ces mthodes sont dclarer soit dans la classe principale, soit dans une classe de mme nom mais post-fixe

    par _ScreenSaverManagement . Par exemple, si ma classe principale sappelle MyApp, alors ces mthodes peuvent se trouver indiffremment dans MyApp.class ou dans MyApp_ScreenSaverManagement.class.

    Il nest pas ncessaire de toutes les dclarer.

    1. scrsvIsCreate : Cette mthode est appele au lancement de JavaExe.exe (cest--dire MyApp.exe) si lcran

    de veille nest pas encore install. Il sera install seulement si cette mthode renvoie TRUE. Si cette mthode nest pas dclare, une bote de dialogue Windows souvrira pour demander lutilisateur sil souhaite ou non installer lcran de veille. La mthode scrsvGetInfo sera galement appele pour obtenir certaines caractristiques ncessaires la cration de lcran de veille.

    2. scrsvIsDelete : Cette mthode sera appele au lancement de JavaExe.exe (cest--dire MyApp.exe) si lcran

    de veille est dj install. Il sera supprim seulement si cette mthode renvoie TRUE. Si cette mthode nest pas dclare, une bote de dialogue Windows souvrira pour demander si lutilisateur souhaite ou non supprimer lcran de veille.

  • 30

    3. scrsvGetInfo : Cette mthode est appele au moment de la cration de lcran de veille afin dobtenir certaines informations complmentaires, tels que :

    Description.

    Transparence : 1 ou TRUE pour indiquer que lcran de veille aura un fond transparent, sinon un fond noir sera mis par dfaut.

    Souris : 1 ou TRUE pour indiquer que le pointeur de souris doit tre visible.

    Frquence de rafraichissement : valeur en millisecondes correspondant la frquence de rafraichissement, cest--dire au dlai dattente entre deux appels la mthode scrsvPaint. Toute valeur infrieure 100 ms (1/10

    ime de seconde) sera fixe 100.

    Cette mthode renvoie un tableau de String dont les lments correspondent respectivement ceux cits

    prcdemment. Si cette mthode nest pas dfinie, toutes ces informations seront vides et la frquence sera de 1000 ms (1 seconde).

    4. scrsvInit : Cette mthode, si elle est dclare, est appele au lancement de lcran de veille, avant le premier appel la mthode scrsvPaint et avant scrsvGetInfo.

    5. scrsvFinish : Cette mthode est appele lorsque lcran de veille est interrompu.

    6. scrsvOpenConfig : Cette mthode, si elle est dclare, est appele lorsque lutilisateur souhaite paramtrer lcran de veille, soit par un click-droit sur le fichier JavaExe.scr (cest--dire MyApp.scr) puis Configurer dans le menu-contextuel, soit depuis le panneau de configuration qui gre les crans de veille

    puis Paramtres .

    7. scrsvPaint (Graphics2D g, int wScr, int hScr) : Cette mthode est obligatoire et sera appele intervalles rguliers, dfini par la mthode scrsvGetInfo.

    Cette mthode possde 3 arguments :

    g : correspond au contexte graphique utilis par certaines mthodes Java.

    wScr : largeur de lcran en pixels.

    hScr : hauteur de lcran en pixels.

    Les dimensions de lcran correspondent toujours aux dimensions du Bureau, mme lors de laffichage en mode prvisualisation dans le panneau de configuration qui gre les crans de veille. En mode prvisualisation, les

    dimensions correspondent ceux du Bureau de lcran principal alors quen mode dexcution normale ils correspondent aux dimensions globales pour lensemble des crans attach au Bureau.

    8. scrsvIsExitByKey (int keycode, boolean isUp) : Si cette mthode est dclare et renvoie TRUE, lcran de veille sera interrompu lorsquune touche sera presse (ou relche).

    Cette mthode possde 2 arguments :

    keycode : code de la touche presse.

    isUp : tat de la touche, presse (FALSE) ou relche (TRUE).

    9. scrsvIsExitByMouse (int x, int y, int nbClick, int button, boolean isUp) : Si cette mthode est dclare et

    renvoie TRUE, lcran de veille sera interrompu lorsque la souris sera dplace ou quun de ces boutons aura t presse (ou relche).

    Cette mthode possde 5 arguments :

    x et y : coordonnes du pointeur de la souris.

    nbClick : nombre de clicks si lun des boutons de la souris a t press, sinon 0.

    button : numro du bouton press : 1 = gauche, 2 = droit, 3 = bouton du milieu sil existe.

    isUp : tat du bouton, press (FALSE) ou relch (TRUE).

    Si aucune de ces deux mthodes dinterruption nest dclare, scrsvIsExitByKey et scrsvIsExitByMouse, lcran de veille sera interrompu au moindre dplacement de souris ou la moindre touche presse.

    Voir en Annexe linterface JavaExe_I_ScreenSaverManagement et lexemple 19.

  • Fonctionnalits additionnelles

  • 33

    Gestion des Evnements Systme

    Cette fonctionnalit de JavaExe permet lapplication Java de recevoir certain vnement de Windows, telle quune connexion ou dconnexion un rseau, un changement daffichage, un dbut ou fin dune session, etc.

    Pour ce faire, il doit exister une mthode qui servira dinterface entre JavaExe et votre application Java, dont la signature est de la forme :

    public static int notifyEvent (int msg, int val1, int val2, String val3, int[] arr1, byte[] arr2);

    Cette mthode est dclarer soit dans la classe principale, soit dans une classe de mme nom mais post-fixe

    par _SystemEventManagement . Par exemple, si ma classe principale sappelle MyApp, alors cette mthode peut se trouver indiffremment dans MyApp.class ou dans MyApp_SystemEventManagement.class.

    La mme mthode est utilise pour tous les types dvnements et ses arguments dpendent du message reu. La valeur retourne par notifyEvent dpend aussi du message.

    Le premier argument, msg, contient le type dvnement et en voici la liste des diffrentes valeurs :

    WM_COMPACTING : Ce message est reu lorsque le systme commence saturer.

    WM_CONSOLE : Ce message est envoy lorsque JavaExe est lanc en mode console (JavaExe_console.exe) et quune tentative dinterruption eu lieu. Largument val1 contient le type dinterruption :

    o CTRL_C_EVENT : un CTRL-C est dclench, mais sera annul si notifyEvent renvoie 0.

    o CTRL_BREAK_EVENT : est utilis par Java pour le dump des threads actifs, mais sera annul si notifyEvent renvoie 0.

    o CTRL_CLOSE_EVENT : lutilisateur tente de fermer la fentre DOS et cette tentative sera annule si notifyEvent renvoie 0.

    o CTRL_LOGOFF_EVENT : lutilisateur dclench la fermeture de sa session. Quelque soit la valeur retourn par notifyEvent cette fermeture ne sera pas

    interrompue.

    o CTRL_SHUTDOWN_EVENT : lutilisateur dclench larrt du systme. Quelque soit la valeur retourn par notifyEvent le systme sera arrt.

    WM_DEVICECHANGE : Ce message signifie quune modification hardware a eu lieue ou ncessite une confirmation. Par exemple si un priphrique a t insr ou retir, ou un CD-

    ROM, etc. Les arguments utiliss sont :

    o val1 : la nature de la modification : DBT_QUERYCHANGECONFIG

    DBT_CONFIGCHANGED

    DBT_CONFIGCHANGECANCELED

    DBT_DEVICEARRIVAL

    DBT_DEVICEQUERYREMOVE

    DBT_DEVICEQUERYREMOVEFAILED

    DBT_DEVICEREMOVECOMPLETE

    DBT_DEVICEREMOVEPENDING

    DBT_DEVICETYPESPECIFIC

  • 34

    o val3 : nom du port. Utilis seulement par DBT_DEVTYP_PORT.

    o arr1 : tableau de au plus 5 int (cela dpend de val1) [0]

    [1] = type du device

    DBT_DEVTYP_OEM

    DBT_DEVTYP_VOLUME

    DBT_DEVTYP_PORT

    [2]

    [3] = si [1]=DBT_DEVTYP_VOLUME => valeur o chaque position

    binaire correspond un n de lecteur : bit 0 = lecteur A ; bit 1 = lecteur B ; ; bit 26 = lecteur Z.

    [4] = si [1]=DBT_DEVTYP_VOLUME => 1=Lecteur Multimdia (CD-

    ROM, ...) ; 2=Lecteur rseau

    WM_DISPLAYCHANGE : Cet vnement est reu lorsque la rsolution de lcran a chang. Les arguments utiliss sont :

    o val1 : le nombre de bits par pixel. On en dduit le nombre de couleurs par 2^val1.

    o val2 : une valeur sur 32 bits dcompose comme suit : 3116 150. Les bits de 0 15 correspondent la largeur de lcran. Les bits de 16 31 donnent la hauteur. Pour dissocier ces 2 valeurs, il suffit dappliquer :

    w = (val2 & 0x0000FFFF);

    h = ((val2>>16) & 0x0000FFFF);

    WM_ENDSESSION : Ce message est reu lorsque la session de lutilisateur va tre ferme. Soit parce que lutilisateur se dconnecte de son login, soit que le systme est arrt. Ce message nest pas reu si lapplication Java est lanc en mode console. Les arguments utiliss sont :

    o val1 : contient la valeur 1 si la fermeture de la session a t confirme, sinon 0. (voir le message WM_QUERYENDSESSION pour cette confirmation).

    o val2 : permet de savoir sil sagit dune simple dconnection de lutilisateur ou de larrt du systme. Si cet argument contient la valeur ENDSESSION_LOGOFF alors il sagit dune dconnection. Il est prfrable de tester la prsence de cette valeur (en tant que bits) plutt que la stricte galit :

    ((val2 & ENDSESSION_LOGOFF) != 0) est prfrable

    (val2 == ENDSESSION_LOGOFF)

    WM_NETWORK : Cet vnement est reu lorsque ltat du rseau a chang. Les arguments utiliss sont :

    o val1 : le type de changement NET_DISCONNECT

    NET_CONNECTING

    NET_CONNECTED

    o val3 : le nom de linterface rseau concern.

    o arr1 : un tableau de 13 int utilis comme suit : [0] = type du rseau

    MIB_IF_TYPE_OTHER

  • 35

    MIB_IF_TYPE_ETHERNET

    MIB_IF_TYPE_TOKENRING

    MIB_IF_TYPE_FDDI

    MIB_IF_TYPE_PPP

    MIB_IF_TYPE_LOOPBACK

    MIB_IF_TYPE_SLIP

    [14] = les 4 champs de lIP cliente. [58] = les 4 champs de lIP de la gateway. [912] = les 4 champs du masque rseau.

    WM_POWERBROADCAST : Cet vnement est dclench lorsque ltat de la batterie ou de lalimentation a chang. Les arguments utiliss sont :

    o val1 : le type dtat PBT_APMQUERYSUSPEND

    PBT_APMQUERYSUSPENDFAILED

    PBT_APMSUSPEND

    PBT_APMRESUMECRITICAL

    PBT_APMRESUMESUSPEND

    PBT_APMBATTERYLOW

    PBT_APMPOWERSTATUSCHANGE

    PBT_APMOEMEVENT

    PBT_APMRESUMEAUTOMATIC

    o val2 : autorise ou non une interaction avec lutilisateur (comme afficher une boite de dialogue, ). Si cet argument contient 0 aucune interaction ne sera autorise.

    o arr1 : contient 2 int [0] = nombre de secondes actuellement utilisable en batterie.

    [1] = nombre total de secondes utilisable en batterie (capacit maximale de la

    batterie).

    o arr2 : contient 3 byte [0] = 1 si la batterie est sur le secteur, sinon 0.

    [1] = tat de chargement de la batterie (ou 255 si inconnu).

    [2] = pourcentage de chargement (ou 255 si inconnu).

    WM_QUERYENDSESSION : Cet vnement est dclench lorsque la session va tre interrompue. Une confirmation est dabord demande lutilisateur et si notifyEvent renvoie 0 la session ne sera pas interrompue. Un autre message, WM_ENDSESSION, sera

    automatiquement envoy dans tous les cas, aprs celui-ci avec le rsultat de notifyEvent. Ce

    message nest pas reu si lapplication Java est lanc en mode console. Les arguments utiliss sont :

    o val2 : mme signification que pour le message WM_ENDSESSION.

    WM_SESSION_CHANGE : Ce message est reu lorsque quun utilisateur se connecte, dconnecte ou verrouille la session. Les arguments utiliss sont :

    o val1 : contient la raison qui a dclench cet vnement WTS_SESSION_LOGGED

    WTS_CONSOLE_CONNECT

    WTS_CONSOLE_DISCONNECT

    WTS_REMOTE_CONNECT

    WTS_REMOTE_DISCONNECT

  • 36

    WTS_SESSION_LOGON

    WTS_SESSION_LOGOFF

    WTS_SESSION_LOCK

    WTS_SESSION_UNLOCK

    WTS_SESSION_REMOTE_CONTROL

    o val2 : contient le numro de la session concern, dans le cas o plusieurs sessions peuvent tre actives en mme temps.

    o val3 : contient le nom du domaine et celui de lutilisateur (son login) qui est lorigine de lvnement. Cette information est de la forme domaine\login.

    o arr1 : est utilis seulement par WTS_SESSION_LOGGED et contient un seul lment indiquant si lutilisateur connect est celui qui est actuellement actif.

    WM_SYSCOMMAND : Cet vnement regroupe divers autres vnements. o val1 : le type de lvnement :

    SC_SCREENSAVE : vnement sur lcran de veille. Largument val2 = 1 pour le dmarrage, 0 pour larrt.

    SC_MONITORPOWER : vnement sur lalimentation du moniteur. Largument val2 = -1 pour le moniteur allum, 2 pour lextinction.

    WM_TIMECHANGE : Cet vnement a lieu lorsque lheure du systme a chang. Aucun argument nest utilis.

    WM_USERCHANGED

    Voir en Annexe linterface JavaExe_I_SystemEventManagement pour la valeur des constantes utilises, et aussi les exemples 6 et 8 traitants des vnements systmes.

  • 37

    Gestion de la barre des tches

    Cette fonctionnalit permet lapplication Java davoir son icne dans la barre des tches ainsi quventuellement un ou deux menus associs (un menu pour le click droit et un autre pour le click gauche).

    Mthodes servant dinterface : JavaExe_I_TaskbarManagement

    Ces mthodes sont directement appeles par JavaExe :

    public static String[][] taskGetMenu (boolean isRightClick, int menuID);

    public static int taskGetDefaultMenuID (boolean isRightClick);

    public static void taskDoAction (boolean isRightClick, int menuID);

    public static boolean taskDisplayMenu (boolean isRightClick, Component parent, int x, int y);

    public static String[] taskGetInfo ();

    public static boolean taskIsShow ();

    public static void taskInit (boolean isServiceUI); (ou void taskInit() pour les versions prcdentes)

    public static void taskDoBalloonAction ();

    public static boolean taskIsBalloonShow ();

    public static void taskSetBalloonSupported (boolean isSupported);

    public static String[] taskGetBalloonInfo ();

    public static void taskDataFromService (Serializable data);

    public static boolean taskIsDataForService ();

    public static Serializable taskDataForService ();

    public static void taskErrorNoService ();

    Ces mthodes statiques sont dclarer soit dans la classe principale, soit dans une classe de mme nom mais

    post-fixe par _TaskbarManagement . Par exemple, si ma classe principale sappelle MyApp, alors ces mthodes peuvent se trouver indiffremment dans MyApp.class ou dans MyApp_TaskbarManagement.class.

    Il nest pas ncessaire de toutes les dclarer.

    1. taskGetMenu (boolean isRightClick, int menuID) : Cette mthode est appele pour obtenir la liste des entres du menu associ licne dans la barre des tches. Ce menu sera gr par Windows, toutefois si lapplication Java possde et gre elle-mme son propre menu pour licne, cette mthode ainsi que taskGetDefaultMenuID et taskDoAction seront inutiles (cf. la mthode taskDisplayMenu pour les menus

    propres lapplication). Dans ce cas il ne sera pas ncessaire de la dclarer, ou alors elle devra renvoyer la valeur null.

    Cette mthode possde 2 arguments :

    isRightClick : contient TRUE si le menu afficher correspond un click droit de la souris. Il peut donc y avoir 2 menus diffrents selon quil sagisse du click droit ou gauche.

    menuID : dans le cas o la liste des entres renvoyer correspond celle dun sous-menu, cet argument contient le numro de lentre possdant ce sous-menu. Sinon la valeur de largument est 0 (ou ngatif).

    La liste renvoye par cette mthode est de type String[][] , cest--dire une liste qui contient une liste de valeurs de types String. A chaque entre du menu correspond une liste de valeurs de la forme :

  • 38

    { ID, LABEL, TYPE, STATUS }

    O :

    ID = un numro unique pour cette entre. La valeur doit tre strictement suprieure 0.

    LABEL = le texte qui sera affich.

    TYPE = la nature de lentre (cf. plus bas).

    STATUS = ltat de lentre laffichage (cf. plus bas).

    Avec TYPE :

    MFT_MENUBARBREAK = place lentre dans une nouvelle colonne avec une sparation verticale.

    MFT_MENUBREAK = place lentre dans une nouvelle colonne sans sparation.

    MFT_RADIOCHECK = si lentre est dans ltat checked, elle sera alors affich sous forme de radio-bouton.

    MFT_SEPARATOR = affiche une sparation horizontale. LABEL est alors ignor.

    MFT_RIGHTORDER = affiche le texte de la droite vers la gauche.

    Si aucune valeur nest spcifie, ce sera alors un texte simple, align de gauche droite, qui sera affich.

    Les valeurs de TYPE sont mixables entre elles sauf MFT_MENUBARBREAK avec

    MFT_MENUBREAK. Par exemple :

    { ID, LABEL, ""+(MFT_MENUBREAK | MFT_RIGHTORDER), STATUS }

    Avec STATUS :

    MFS_DISABLED = si lentre du menu est dsactive. MFS_CHECKED = si lentre est checke. MFS_HILITE = si lentre est prslectionne.

    MFS_ADMIN = si lentre possde licne Admin ( ou selon Windows).

    Si aucune valeur nest spcifie, lentre du menu sera alors simplement active et non-checke. Les valeurs de STATUS sont aussi mixables entre elles.

    2. taskGetDefaultMenuID (boolean isRightClick) : Cette mthode permet de dfinir quelle est lentre du menu qui sera pris en compte lors du double-click sur licne. Cette entre sera alors mise en gras dans le menu. Si cette mthode nest pas dclare ou si elle renvoie 0 (ou une valeur ngative), aucune entre ne sera dfinie.

    Largument de cette mthode, isRightClick , contient TRUE si cela concerne le menu pour le click droit de la souris.

    3. taskDoAction (boolean isRightClick, int menuID) : Cette mthode prend en charge laction faire lorsquune entre du menu aura t slectionne.

    Cette mthode possde 2 arguments :

    isRightClick : contient TRUE si le menu concern est celui du click droit de la souris.

    menuID : contient le numro de lentre slectionn par lutilisateur.

    4. taskDisplayMenu (boolean isRightClick, Component parent, int x, int y) : Cette mthode prend en charge

    laffichage et la gestion du menu associ licne. Elle renvoie TRUE si le menu est pris en charge.

  • 39

    Cette mthode possde 4 arguments :

    isRightClick : contient TRUE si le menu grer correspond un click droit de la souris. Il peut donc y avoir 2 menus diffrents selon quil sagisse du click droit ou gauche.

    parent : selon la manire dont le menu sera gr par lapplication Java, il peut tre ncessaire davoir un objet parent auquel ce menu sera rattach. Cet objet parent est cr par JavaExe.

    x et y : coordonnes o doit tre affich le menu, correspondant au coin infrieur droit de ce menu.

    5. taskGetInfo : Cette mthode permet dobtenir diverses informations pour laffichage et la gestion de licne et de son menu. Cette mthode renvoie un tableau de String contenant dans lordre :

    La description de licne, qui sera affiche lorsque la souris passera dessus.

    Le type daction faire pour un simple click-droit de la souris (par dfaut ce sera ACT_CLICK_MENU, cf. plus bas).

    Le type daction faire pour un double click-droit de la souris (ACT_CLICK_NOP par dfaut).

    Le type daction faire pour un simple click-gauche de la souris (ACT_CLICK_NOP par dfaut).

    Le type daction faire pour un double click-gauche de la souris (ACT_CLICK_OPEN par dfaut).

    Il y a 3 types daction possible :

    ACT_CLICK_NOP = ne rien faire

    ACT_CLICK_OPEN = excute laction dfinie par la mthode taskDoAction avec lentre du menu renvoye par la mthode taskGetDefaultMenuID.

    ACT_CLICK_MENU = affiche le menu en appelant dabord la mthode

    taskDisplayMenu. Si cette dernire nest pas dfinie ou renvoie FALSE, alors la mthode taskGetMenu sera appele.

    6. taskIsShow : Cette mthode est rgulirement appele par JavaExe pour savoir si licne doit tre affiche

    ou cache. Si la mthode renvoie TRUE licne sera affiche.

    7. taskInit (boolean isServiceUI) : Cette mthode est appele au lancement de lapplication. Largument

    isServiceUI est TRUE si ce TaskbarManagement constitue la partie interactive dun service. Toutefois, pour assurer la compatibilit avec les versions prcdente de JavaExe, cette mme mthode sans argument est aussi

    accepte.

    8. taskDoBalloonAction : Cette mthode prend en charge laction faire lorsquun click a eue lieu dans la bulle dinfo.

    9. taskIsBalloonShow : Cette mthode est rgulirement appele par JavaExe pour savoir si un message est

    prt tre affich au niveau de licne. Si la mthode renvoie TRUE, alors la mthode taskGetBalloonInfo sera appele pour obtenir le message.

    10. taskSetBalloonSupported (boolean isSupported) : Cette mthode est appele au lancement de lapplication pour linformer si la version de Windows supporte ou non les messages dicne. Si largument de cette

    mthode contient TRUE, alors le systme supporte ce type de message.

  • 40

    11. taskGetBalloonInfo : Cette mthode permet dobtenir le message dicne afficher et quelques informations

    complmentaires. Elle sera appele lorsque la mthode taskIsBalloonShow renverra TRUE, ainsi quau lancement de lapplication. Cette mthode renvoie un tableau de String contenant dans lordre :

    Titre du message.

    Message afficher.

    Type du message.

    Dure daffichage du message (en secondes).

    Avec pour Type du message :

    NIIF_NONE = message neutre.

    NIIF_INFO = message dinformation. NIIF_WARNING = message dattention. NIIF_ERROR = message derreur. NIIF_USER = message propre lapplication.

    12. taskDataFromService (Serializable data) : Cette mthode sera appele par le service (dans le cas o lapplication Java est lance en mode service) avec en argument un objet traiter par la partie interactive.

    13. taskIsDataForService : Cette mthode devra renvoyer TRUE si un objet est disponible pour le service.

    14. taskDataForService : Cette mthode renvoie un objet pour le service.

    15. taskErrorNoService : Cette mthode est appele si le service na pas t cr.

    A ces trois mthodes correspond leur contrepartie dans le ServiceManagement. Voir le chapitre Lancement

    en tant que service pour le dtail de ces mthodes et quelques explications complmentaires sur les services en

    interaction avec le Bureau, ainsi que linterface JavaExe_I_ServiceManagement en Annexe.

    Voir en Annexe linterface JavaExe_I_TaskbarManagement pour la valeur des constantes utilises, et aussi les exemples 4, 5 et 8 utilisant la gestion de la barre des tches.

  • 41

    Gestion de la Base de Registre Windows

    Cette fonctionnalit permet lapplication Java davoir accs la base de registre de Windows en lecture comme en criture et dy effectuer toutes les oprations possibles : cration et suppression dune cl ou dune valeur, lecture et modification dune valeur,

    Mthodes servant dinterface : JavaExe_I_RegistryManagement

    Pour ce faire, il suffit de dclarer quelques mthodes statiques soit dans la classe principale, soit dans une

    classe de mme nom mais post-fixe par _RegistryManagement . Par exemple, si ma classe principale sappelle MyApp, alors ces mthodes peuvent se trouver indiffremment dans MyApp.class ou dans

    MyApp_RegistryManagement.class.

    Il nest pas ncessaire de toutes les dclarer, seulement celles dont lapplication Java a besoin. Il faut toutefois noter que ces mthodes sont de type native, cest--dire quil nest pas ncessaire de dfinir le corps des mthodes, mais seulement leur signature, dont voici :

    public static native String regGetValueSTR (int hkey, String pathKey, String nameValue, boolean isExpandVal);

    public static native byte[] regGetValueBIN (int hkey, String pathKey, String nameValue);

    public static native int regGetValueDWORD (int hkey, String pathKey, String nameValue);

    public static native long regGetValueQWORD (int hkey, String pathKey, String nameValue);

    public static native String[] regGetValueMULTI (int hkey, String pathKey, String nameValue);

    public static native boolean regSetValueSTR (int hkey, String pathKey, String nameValue, String val, boolean isTypeExpand);

    public static native boolean regSetValueBIN (int hkey, String pathKey, String nameValue, byte[] val);

    public static native boolean regSetValueDWORD (int hkey, String pathKey, String nameValue, int val

    ,boolean isTypeBigEndian);

    public static native boolean regSetValueQWORD (int hkey, String pathKey, String nameValue, long val);

    public static native boolean regSetValueMULTI (int hkey, String pathKey, String nameValue, String[] val);

    public static native int regGetTypeValue (int hkey, String pathKey, String nameValue);

    public static native boolean regCreateKey (int hkey, String pathKey);

    public static native boolean regDeleteKey (int hkey, String pathKey);

    public static native boolean regDeleteValue (int hkey, String pathKey, String nameValue);

    public static native String[] regEnumKeys (int hkey, String pathKey);

    public static native String[] regEnumValues (int hkey, String pathKey);

    Dans la version prcdente de JavaExe, ces mthodes taient prfixes par nativeReg_ et maintenant

    elles le sont par reg , mais les deux notations sont acceptes.

    De manire gnrale, les arguments hkey correspondent la racine source do commenceront les cls, les valeurs possibles se trouvent en Annexe dans linterface JavaExe_I_RegistryManagement. Les valeurs couramment utilises sont HKEY_CURRENT_USER et HKEY_LOCAL_MACHINE. Pour plus dexplications sur ces valeurs, veuillez consulter le site MSDN de Microsoft

    : http://msdn.microsoft.com/fr-fr/library/ms724836.aspx.

    Ensuite, les arguments pathKey correspondent un chemin de cls pour accder une valeur (excluant le

    nom de la valeur). Les noms des cls sont spars par un back-slash (\). Par exemple : Software\JavaExe\Examples .

    Les arguments nameValue correspondent un nom de valeur.

  • 42

    Et enfin les arguments val correspondent la valeur que lon souhaite associer nameValue. Son type dpend de la mthode utilise. Consultez http://msdn.microsoft.com/fr-fr/library/ms724884.aspx pour plus

    dinformations sur les types dans la base de Registre.

    Il faut aussi noter que les nombres peuvent tre stocks dans le Registre sous deux formats. Par exemple un

    entier sur 32 bits (0x12345678) sera stock :

    Little Endian : sous la forme 0x78 0x56 0x34 0x12

    Big Endian : sous la forme 0x12 0x34 0x56 0x78

    Les mthodes natives dclarer sont :

    Mthodes pour rcuprer les valeurs :

    1. regGetValueSTR : permet de rcuprer la valeur en type String associe nameValue situ au bout du chemin pathKey. La valeur stocke dans la base de Registre doit tre de type REG_SZ, REG_EXPAND_SZ

    ou REG_LINK, sinon la mthode renverra null. Largument isExpandVal est utilis dans le cas dune valeur REG_EXPAND_SZ et permet dinterprter (ou non) les variables denvironnement contenu dans la valeur. Si

    la valeur nest pas trouve par rapport au chemin spcifi, la mthode renverra null.

    2. regGetValueBIN : permet de rcuprer la valeur sous forme dun tableau de byte correspondant aux donnes stock tel quel sans interprtation ni transformation. Le type de la valeur stocke dans la base de Registre na

    pas dimportance. Si la valeur nest pas trouve la mthode renverra null.

    3. regGetValueDWORD : permet de rcuprer la valeur en type int (32 bits). La valeur stocke dans la base de Registre doit tre de type REG_DWORD ou REG_DWORD_BIG_ENDIAN. Pour ce dernier, la valeur sera

    automatiquement convertie en Little Endian qui est le format standard des nombres sous Windows. Si la

    valeur est dun autre type ou nexiste pas, la mthode renverra 0.

    4. regGetValueQWORD : permet de rcuprer la valeur en type long (64 bits). La valeur stocke dans la base de Registre doit tre de type REG_QWORD. Si la valeur est dun autre type ou nexiste pas, la mthode renverra 0.

    5. regGetValueMULTI : permet de rcuprer la valeur sous forme dun tableau de String. La valeur stocke dans la base de Registre doit tre de type REG_MULTI_SZ. Si la valeur est dun autre type ou nexiste pas, la

    mthode renverra null.

    Mthodes pour modifier les valeurs :

    6. regSetValueSTR : permet de modifier ou de crer une valeur de type REG_SZ, ou REG_EXPAND_SZ si

    largument isTypeExpand est TRUE. Si le chemin pathKey contient des cls qui nexistent pas, celles-ci

    seront cres. La mthode renverra TRUE si lopration sest droule avec succs.

    7. regSetValueBIN : permet de modifier ou de crer une valeur de type REG_BINARY. Les cls du chemin

    seront cres si ncessaire. La mthode renverra TRUE si lopration sest droule avec succs.

    8. regSetValueDWORD : permet de modifier ou de crer une valeur de type REG_DWORD, ou

    REG_DWORD_BIG_ENDIAN si largument isTypeBigEndian est TRUE. Les cls du chemin seront cres

    si ncessaire. La mthode renverra TRUE si lopration sest droule avec succs.

    9. regSetValueQWORD : permet de modifier ou de crer une valeur de type REG_QWORD (64 bits). Les cls

    du chemin seront cres si ncessaire. La mthode renverra TRUE si lopration sest droule avec succs.

  • 43

    10. regSetValueMULTI : permet de modifier ou de crer une valeur de type REG_MULTI_SZ. Les cls du

    chemin seront cres si ncessaire. La mthode renverra TRUE si lopration sest droule avec succs.

    Mthode pour rcuprer des informations sur les valeurs :

    11. regGetTypeValue : permet dobtenir le type dune valeur stocke dans la base de Registre. Le type retourn correspond :

    REG_NONE (= 0) : si la valeur nest pas trouve par rapport au chemin spcifi. REG_SZ (= 1) : chaine de caractres (Unicode).

    REG_EXPAND_SZ (= 2) : chaine de caractres (Unicode) contenant des variables denvironnement. REG_BINARY (= 3) : donnes binaires brute.

    REG_DWORD (= 4) : entier sur 32 bits.

    REG_DWORD_BIG_ENDIAN (= 5) : entier sur 32 bits au format BigEndian .

    REG_LINK (= 6) : chaine de caractres (Unicode) correspondant un lien symbolique du Registre

    (ne devrait plus tre utilis).

    REG_MULTI_SZ (= 7) : liste de chaines de caractres (Unicode).

    REG_QWORD (= 11) : entier sur 64 bits.

    Consultez le site MSDN de Microsoft http://msdn.microsoft.com/fr-fr/library/ms724884.aspx pour

    plus dinformations sur les types dans la base de Registre.

    Mthodes pour la cration ou la suppression :

    12. regCreateKey : permet de crer les cls inexistantes dans le chemin spcifi pathKey. La mthode renverra

    TRUE si lopration sest droule avec succs ou si toutes les cls existent dj.

    13. regDeleteKey : permet de supprimer une cl situe au bout du chemin pathKey. Cette cl peut avoir des

    valeurs, qui seront supprimes avec elle, mais ne doit pas avoir de sous-cls. La mthode renverra TRUE si

    lopration sest droule avec succs.

    14. regDeleteValue : permet de supprimer la valeur nameValue de la base de Registre. La mthode renverra

    TRUE si lopration sest droule avec succs.

    Mthodes pour rcuprer la liste des noms :

    15. regEnumKeys : renvoie la liste des sous-cls directement contenues au bout du chemin pathKey. La

    mthode renverra null si le chemin spcifi nest pas valide.

    16. regEnumValues : renvoie la liste des noms de valeur directement contenues au bout du chemin pathKey. La

    mthode renverra null si le chemin spcifi nest pas valide.

    Voir en Annexe linterface JavaExe_I_RegistryManagement pour la valeur des constantes utilises, et aussi les exemples 9 et 10 utilisant la gestion de la base de Registre.

  • 45

    Ecran dynamique de dmarrage

    Cette fonctionnalit permet lapplication Java de mettre jour de faon dynamique lcran de dmarrage pralablement dfini (voir le paragraphe consacr lcran statique de dmarrage, page 20), et prends effet aprs laffichage de celui-ci.

    Mthodes servant dinterface : JavaExe_I_SplashScreenManagement

    Pour ce faire, il suffit de dclarer quelques mthodes statiques soit dans la classe principale, soit dans une

    classe de mme nom mais post-fixe par _SplashScreenManagement . Par exemple, si ma classe principale

    sappelle MyApp, alors ces mthodes peuvent se trouver indiffremment dans MyApp.class ou dans MyApp_SplashScreenManagement.class.

    Il nest pas ncessaire de toutes les dclarer, seulement celles dont lapplication Java a besoin.

    1. public static void sphInit (); 2. public static void sphFinish (); 3. public static boolean sphIsClose (); (ou isCloseSplash p