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

Windows Discussion :

Orientation technique pour une application en "background"


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Orientation technique pour une application en "background"
    Bonjour,

    j'aimerais créer une application (sous Windows) qui ferait un action (ajouter une ligne dans une fichier) lorsque je presse une certaine combinaison de touche (CTRL + S).

    Mais j'aimerais que cela fonctionne quand l'application est en "background", càd quand elle n'a pas le focus.

    Quel langage devrais-je utiliser ? (je connais un peu JAVA mais est-ce possible ?)

    Dans ce langage, comment faire pour "catcher l'event" ?

    Pour plus d'information, voilà exactement ce que je veux réaliser et pourquoi :

    Lorsque je joue à un jeux vidéo (TeamFortress2), j'enregistre mes parties dans une démo (sorte de vidéo). Et j'aimerais plus tard compiler une belle vidéo avec mes meilleures actions, mais il est difficile de les retrouver parmis les dizaines d'heures enregistrées.

    J'aimerais donc pouvoir, lorsque je fait une belle action pendant que je joue, appuyer sur CTRL + S (ou autre), mon programme ajouterait alors une ligne avec la date et l'heure du moment dans un fichier. Je pourrai alors plus tard retrouver facilement ces belles actions pour les compiler dans une video (frag movie).

    Merci d'avance pour vos réponses, tout conseil est le bienvenu

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Hooker Ctrl + S pour être notifié d'une opération d'enregistrement, c'est tout ce qu'il y a de plus malsain. La meilleure solution à ton problème consiste plutôt à hooker les activités qui se passent dans ton dossier de fichiers (genre d'événement possible : un nouveau fichier a été créé, un fichier a été modifié, un fichier a été renommé, etc.). Regarde du côté des APIs FindFirstChangeNotification et ReadDirectoryChangesW. Cette dernière surtout.

  3. #3
    Membre actif Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Points : 237
    Points
    237
    Par défaut
    Sinon en beaucoup plus simple prends un screenshot quand t'as fait une belle action et ensuite regarde les dates de tes fichiers screenshots.
    Et pour répondre à ta question, ce n'est pas possible en java faut utiliser l'api de windows directement.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Points : 168
    Points
    168
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #include <windows.h>
    #include <stdio.h>
    #include <time.h>
    
    //---------------------------------------------------------
    int logtime(void)
    {
      FILE *f = fopen("logtime.txt", "a");
    
      if(f)
      {
        time_t t = time(0);
        fprintf(f, "%s", ctime(&t));
        fclose(f);
        return 1;
      }
      return 0;
    }
    
    //---------------------------------------------------------
    int WINAPI WinMain(HINSTANCE a, HINSTANCE b, LPSTR c, int d)
    {
      MSG m;
    
      CreateMutex(0, 0, "logtime");
      if(GetLastError() == ERROR_ALREADY_EXISTS)
        return 1;
    
      // Ctrl + Alt + S pour logtime
      RegisterHotKey(0, 1, MOD_CONTROL|MOD_ALT, 'S');
    
      // Ctrl + Alt + Q pour quitter
      RegisterHotKey(0, 2, MOD_CONTROL|MOD_ALT, 'Q');
    
      while(GetMessage(&m, 0, 0, 0))
      {
        DispatchMessage(&m);
    
        if(m.message == WM_HOTKEY)
        {
          if(m.wParam == 1)
            logtime();
    
          if(m.wParam == 2)
            break;
        }
      }
    
      UnregisterHotKey(0, 1);
      UnregisterHotKey(0, 2);
      return 0;
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci à Melem :
    - pour avoir déplacé mon message dans le bon forum (j'avais hésité lors de la création )
    - pour son commentaire qui m'a permis d'apprendre le mot Hook (google+hook=win), j'avais essayé de trouver une solution par google mais je ne savais pas quel keyword utiliser
    - par contre, je ne voulais pas catcher le CTRL+S d'une autre application mais bien utiliser CTRL+S (ou n'importe quelle autre combinaison) pour ajouter une ligne dans un fichier à moi (tout en étant dans une application où le CTRL+S n'est pas utilisé).

    Merci à jfk12 :
    - il m'a envoyé un MP que je met ici pour ceux qui veulent :

    Citation Envoyé par jfk12
    Tu peux demander sur le newsgroup professionnel des apis Win32 :
    news://nntp.aioe.org/fr.comp.os.ms-w....programmation
    ou
    http://tinyurl.com/cvd7wv par Google
    où ça a souvent été discuté
    (méthode officielle, hooks et autres)
    Merci à magma² :
    - pour son programme en C qui a l'air de faire exactement ce que je veux
    - par contre, pour finir je ne vais pas le compiler/tester

    Un super grand merci à Twindruff :
    - ta solution est beaucoup plus simple et je vais l'utiliser plutôt que de développer mon petit programme
    - par contre, tu as dit :

    Citation Envoyé par Twindruff
    ce n'est pas possible en java faut utiliser l'api de windows directement
    A mon avis, ça doit être possible mais je ne suis pas sûr. magma² l'a bien fait en C lui ! Il suffit de trouver le bon API, non ?

  6. #6
    Membre actif Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Points : 237
    Points
    237
    Par défaut
    De rien
    L'api win32 de windows a une interface C donc heureusement qu'on peut le faire en C
    Mais non en java pur tu ne peux pas appeler des choses natives du genre l'api win32.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choix techniques pour une application Java
    Par henry49 dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 17/03/2015, 11h20
  2. Choix d'un langage de programmation pour une application orientée web
    Par Mick DG dans le forum Général Conception Web
    Réponses: 10
    Dernier message: 12/07/2006, 14h45
  3. Réponses: 2
    Dernier message: 04/07/2006, 10h07

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