IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

[JNI ? ] Bloquer temporairement une application


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut [JNI ? ] Bloquer temporairement une application
    Bonjour, je développe quelques outils externes pour une appli commerciale (sous Win). Helas (pour cette version en tous cas), pour certaines actions je suis obligé de donner les droits admin à l'utilisateur

    Donc, je souhaite, le temps de l'execution (en tous cas là où l'utilisateur est admin) bloquer l'accès à cette application.

    Au début je pensais qu'on pouvait gérer ça avec la partie "interface graphique" de l'appli mais apparemment non (1.4).

    Du coup je cherche une autre solution ... je crois que je vais devoir utiliser JNI. J'ai cherché un peu mais je n'ai rien trouvé de concluant ...

    Avant que je me lance vraiment là dedans :

    Est ce la bonne (la seule) solution ?
    Est ce que je vais galérer (je connais pas JNI) ?
    Est ce que c'est lourd (niveau perf et modification de mon code existant) ?

    Quand je dis bloquer l'appli, pour vous c'est quoi ? iconifier et empecher l'ouverture, stopper le process ??? Si vous avez des idées ...


    Voilà, si qqun voit une ou des solutions à mon pb ou si vous avez de la doc ou un bout de code dispo ... je suis ouvert à tout (enfin on se comprend )

    merci d'avance !

  2. #2
    Membre expérimenté

    Profil pro
    Chercheur en informatique
    Inscrit en
    Novembre 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 130
    Par défaut
    Si par bloquer l'application tu entend empecher à l'utilisateur de faire des actions du type cliquer sur des boutons ou un menu, tu peux peut-être simplement detruire ou cacher la fenetre.
    Si tu la cache seulement, il sera peut-être toujours possible d'avoir accès à certaine fonctions, j'en suis pas sur.

    Je vois pas vraiment d'autre moyen autrement.
    Pour répondre à ta question sur l'utilisation de JNI, je pense pas que ca aurai d'utilité, mais sinon c'est pas très difficile à faire.

  3. #3
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Bon je précise un peu.

    Il s'agit d'une appli "normale" et je dispose d'une api pour faire des traitements externes sur les données traitées par cette appli. Les outils externes que je crée sont lancés depuis cette appli ...

    donc je ne veux pas tuer l'appli originale, puisqu'il faut que l'utilisateur y retourne apres l'exécution des mes outils. Seulement, je souhaite que l'utilisateur ne puisse pas utiliser l'appli (aller dans le menu de gestion des droits par exemple) pendant que je réalise des traitements.

    Je veux un truc pas trop lourd car je pense que dans une prochaine version, je lancerai les outils externes avec un autre utilisateur (donc l'utilisateur courant n'aura pas ses droits modifiés). La c'est simplement une solution provisoire ... à moins qu'elle soit très bien, dans ce cas je la garde.

    Je suppose que l'interface graphique ne peux pas bloquer l'utilisation de l'appli (un alwaysOnTop en 1.5 aurait peut etre suffit ?) donc il faut que je passe par JNI ...

    Mais que faire ? bloquer le process de l'appli ou ???

    Et surtout comment faire, je n'ai aucune piste de départ ...

    [EDIT] ou alors est-il possible de récupérer le process et de faire un wait ou waitFor dessus ??

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour quoi ne pas faire tout simplement une barre de progression modale qui bloque l'utilisation de l'appli tant que les tâches à affectuer n'ont pas été finies...
    De cette façon la JFrame de l'appli est complêtement inaccessible. Sinon tu peux passer par le PerformanceInfiniteProgressPanel de swingfx qui vient se mettre par dessus le GlassPane et empêche également toute action de l'utilisateur

    Enfin ce sont que des pistes

  5. #5
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    le pb, c'est pas de bloquer l'appli que je lance, c'est de bloquer l'appli "originale" qui n'est pas accessible en java. Enfin, je veux dire c'est un exe quoi, j'ai pas accès à sa JFrame ... évidemment j'aurais fais ça sinon

    A moins que je ne comprenne pas ce que tu dis ?

    En gros c'est comme si tu lançais Nero (par exemple), que dans le menu de Nero tu pouvais lancer des appli externes. Moi je veux bloquer l'utilisation de Nero pendant que l'appli externe tourne ... (je sais pas si c'est plus clair).

    Mon appli externe possède elle une JFrame mais je ne pense pas que je puisse la forcer à être tout le temps au premier plan ??

    donc je pense à bloquer le processu? il faut donc que je le récupère (avec tasklist et du parsage apparemment) et que je lui fasse un wait je pense ?

    en fait JNI me parait complexe pour ce que je veux faire, à moi qu'une DLL me permette de le faire direct, mais j'ai pas envie d'écrire du code C ... (vu que cette solution est peut etre temporaire)

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Eventuellement en passant par un WindowStateListener et un WindowFocusListener tu doit pouvoir arriver à quelquechose avec du setExtendedState et du requestFocusInWindow sur ta JFrame.
    Tu devrais pouvoir simuler un setAlwaysOnTop + une JFrame tout le temps maximisée(donc pas dans la barre des tâches)

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/07/2007, 11h24
  2. bloquer le fonctionnement d'une application
    Par witch dans le forum Windows
    Réponses: 17
    Dernier message: 09/07/2007, 17h02
  3. Réponses: 1
    Dernier message: 11/10/2006, 09h49
  4. JNI : attaquer une application déja lancée!!
    Par tony31 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 01/03/2006, 14h40
  5. Réponses: 2
    Dernier message: 20/06/2005, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo