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

Langage C++ Discussion :

Accéder à une autre application ouverte


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 16
    Points
    16
    Par défaut Accéder à une autre application ouverte
    Bonjour !
    Je voulais savoir s'il était possible d'accéder à une autre application ouverte en C++.

    Imaginons l'utilisateur joue à Fifa 14, est-ce qu'il serait possible que mon application puisse calculer à combien de FPS le joueur tourne ? (une sorte de Fraps qui ne permet pas de filmer (en tout cas pas actuellement)).

    Merci d'avance.
    Cordialement.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Non.
    Du moins pas tout à fait.

    Avec un programme comme ltrace, tu peux t'intercaler entre le système et le jeu.
    Il faut par contre un utilisateur bienveillant, car il doit lancer le jeu dans ltrace (par une commande/un raccourci, qui demande à strace de lancer le jeu)
    Avec les bons arguments, tu peux demander à ltrace de se limiter à une fonction que tu sais être appelée au bon moment. Je pense à l'équivalent directx de SDL_flip, par exemple.

    Donc, en pratique, non, parce que ça voudrait dire savoir comment le jeu a été codé.

    Par contre, pour trouver le fps, qui n'est pas du tout une variable, mais une mesure de performance, tu peux le demander directement au driver dela carte graphique, pour peu que le jeu soit en plein écran.

    Je peux me tromper, mais c'est très peu probable.
    A tout hasard, regarde comment est fait fraps, s'il est open-source
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre à l'essai
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Merci pour ta réponse ! ^^

    Je vais essayer en demandant à la carte graphique ^^
    Ce serait tellement mieux si tous les programmeurs incluaient un compteur de FPS qui ne prend que quelques lignes...

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Cependant, pourquoi as-tu besoin de cette information?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Membre à l'essai
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Tout simplement parce que je souhaite créer une application qui me permet de voir à combien de FPS je tourne sans passer par des logiciels tels que Fraps, Bandicam, Dxtory, etc..

  6. #6
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Le fps dépend de la quantité de choses affichées, de la puissance graphique, et de l'efficacité de l'affichage.

    Une approximation est la sensation de fluidité.
    En fait, le fps est l'inverse d'une mesure directe, le temps de calcul de chaque frame.

    si tu tournes à moins de 0,1 seconde par frame (spf), tu ne devrais pas trop le sentir.
    à 0,5 spf, tu percois clairement la saccade.

    un fps visuellement très correct, c'est 24 fps (vitesse d'un film, par exemple).
    à 18 fps, pour des mouvements pas trop violent, ca va encore.

    wikipedia

    18 fps, c'est à peu près une image tous les demi-dixièmes de seconde.

    Je reprends l'exemple de fifa.
    Si le ballon semble se téléporter de position en position, tu es clairement à moins de 10fps.
    Si tu parviens à compter à vois haute ses téléportations, c'est moins de 5.
    Si tu n'as que le temps de dire top, top, top... tu es entre 5 et 10. (comptes 10 tops, un chrono à la main, et tu sauras)

    En dehors des outils des cartes graphiques, fraps est quand même la meilleure solution, car la plus légère
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  7. #7
    Membre à l'essai
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Mais comme tu dis ce n'est qu'une approximation.
    Cette fois je prends l'exemple de Minecraft :
    - Sans shader je tourne entre 100 et 350 fps
    - Avec shader environ 50-60 fps..

    Avec ce que tu me dis l'approximation ne marcherait pas, le jeu est totalement fluide, je pourrais très bien tourner à 30 fps le résultat serait quasi identique (du moins la différence serait invisible par la plupart des humains) aussi bien que 1000 fps (même si j'en doute fortement avec ma CG).

    Ma résolution est de 1920 x 1080, mais si jamais je passe en 800 x 600, les FPS seront nettement augmentés (entre 500 et 600 fps sans shader, et environ 110-120 avec shader). Minecraft a l'avantage d'avoir toutes les informations en appuyant sur F3 et depuis la version 14w30c (snapshot) je peux même voir le modèle de ma CG.
    Revenons à l'exemple de Fifa 14, le jeu est totalement fluide. Comment je peux savoir à combien de FPS je tourne ? J'utilise bandicam !
    Pour Call of Duty BO2 le problème ne se pose pas, il y a une option pour l'activer.
    Mais pour Need for Speed Rivals, comment savoir d'où vient le problème de mes freeze qui apparaissent de temps en temps. Est-ce un défaut de programmation, ma carte graphique n'est-elle pas assez puissante ou n'ai-je pas assez de ram. Cette fois, je dois utiliser le Gestionnaire des tâches pour savoir si le problème vient de la ram ou pas. Malheureusement, le jeu est en plein écran, et je n'ai pas envie de réduire ma fenêtre pour écarter cette possibilité. Je dois donc utiliser Bandicam. Je n'ai fait aucun test dessus pour savoir d'où vient mon problème, et personnellement je m'en fous royalement.

    Le problème ne doit pas venir de la CG car quelle que soit la résolution le jeu freeze. J'ai 8 go de ram donc ce ne peut être un problème. Pourtant je pense que le problème vient de là et que c'est aussi un problème de programmation..
    Enfin bon, ce n'est pas le sujet.

    Avec mon logiciel, le résultat serait le même qu'avec Bandicam, sauf que doué comme je suis, j'ai 1 chance sur 2 pour lancer une vidéo.
    Alors que si j'ai mon logiciel, je le lance et je ne peux pas filmer, donc aucun problème de ce côté (autant dire qu'il est possible de ne pas s'apercevoir qu'on a filmé (surtout avec moi)). Donc si un utilisateur est aussi doué que moi il va perdre de la place sans s'en rendre compte. Selon les résolutions et le logiciel utilisé, la place prise peut être énorme. En plus, pour ceux qui ne connaissent pas Bandicam (qui est gratuit) ils vont devoir prendre la v. d'essai de fraps (je ne sais pas si elle est limité dans le temps, mais si elle l'est, c'est un problème). S'il veut filmer, c'est un autre problème.

    Mais le problème ne vient pas de nous, utilisateurs, mais des programmeurs. De nombreux utilisateurs souhaitent "voir à combien de FPS ils jouent", généralement pour se la péter ou pour savoir si le problème vient de la Carte Graphique. J'aurai bien été déçu de n'acheter que ma nouvelle CG pour jouer à Watch Dogs, le problème venait de la mémoire qui n'était pas suffisante (et oui, maintenant 4 go de ram n'est plus suffisant pour jouer aux jeux).
    Cette fois j'ai bien été con car je n'ai pas utilisé Bandicam qui m'aurait permit de voir qu'en temps normal je tournais avec plus de 20 fps, et que c'était la mémoire qui saturait (encore une fois merci le gestionnaire de tâches windows).

    Donc, pour se la péter ou pour pouvoir savoir d'où viennent les freeze, un compteur de FPS est toujours intéressant.

    Maintenant, le sujet est résolu, je vous invite donc à ne plus répondre à ce sujet.

    Cordialement.

  8. #8
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    le fps, passé 30, n'a aucune signification, si ce n'est "tiens, c'est bien passé".

    Un freeze temporaire de quelques secondes est lié à un surcharge cpu, ou un accès disque/réseau.
    Un freeze long à un blocage sur la quantité de mémoire vidéo (cf shared video memory)
    Un freeze réellement définitif est lié à une boucle infinie.

    Tu dis que tu as 8GO de RAM, c'est chouette, mais as-tu un windows 64bits et un jeu 64 bits?
    Sinon, soit la mémoire n'est même pas prise en compte par l'OS (qui ne sait même pas y accéder), soit par le jeu, pour la même raison.

    La version payante de FRAPS permet essentiellement d'avoir des vidéos plus longues, et de meilleure qualité.
    Mais la version gratuite est largement suffisante.

    De plus savoir ton fps ne va rien te dire.
    à tous les coups, ton jeu est "v-sync" c'est à dire synchronisé avec la résolution verticale de l'écran: c'est à dire au rythme d'affichage de l'écran.

    Et tu vas bien voir ton fps chuté à 0 ou 1 lors des freezes.

    Ce qu'il te faut, c'est d'autres informations, disponibles en général dans les outils optionnels que propose le fabriquant de ta carte vidéo, et qui te donneront justement l'usage de la mémoire vidéo.

    Je peux sûrement t'aider mieux, mais il faut que je sache ce que tu appelles un freeze, combien de temps il dure, et quand il semble apparaitre.
    au bout d'un certain temps (quarte courses, par exemple)?
    lorsqu'il y quinze voitures à l'écran?
    lorsque schtroumpf grognon te regarde?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  9. #9
    Membre à l'essai
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par leternel Voir le message
    le fps, passé 30, n'a aucune signification, si ce n'est "tiens, c'est bien passé".

    Un freeze temporaire de quelques secondes est lié à un surcharge cpu, ou un accès disque/réseau.
    Un freeze long à un blocage sur la quantité de mémoire vidéo (cf shared video memory)
    Un freeze réellement définitif est lié à une boucle infinie.

    Tu dis que tu as 8GO de RAM, c'est chouette, mais as-tu un windows 64bits et un jeu 64 bits? Oui ^^
    Sinon, soit la mémoire n'est même pas prise en compte par l'OS (qui ne sait même pas y accéder), soit par le jeu, pour la même raison.

    La version payante de FRAPS permet essentiellement d'avoir des vidéos plus longues, et de meilleure qualité. Je ne savais pas, je ne l'utilise pas
    Mais la version gratuite est largement suffisante.

    De plus savoir ton fps ne va rien te dire. C'est quand même quelque chose que beaucoup de personnes utilisent pour dire "j'ai un super pc", mais je sais bien que ce n'est pas essentiel ^^
    à tous les coups, ton jeu est "v-sync" c'est à dire synchronisé avec la résolution verticale de l'écran: c'est à dire au rythme d'affichage de l'écran. Pas tous, certains peuvent être configurables et on peut la désactiver (LoL, Minecraft, ...)

    Et tu vas bien voir ton fps chuté à 0 ou 1 lors des freezes. J'ai jamais regardé en fait ^^

    Ce qu'il te faut, c'est d'autres informations, disponibles en général dans les outils optionnels que propose le fabriquant de ta carte vidéo, et qui te donneront justement l'usage de la mémoire vidéo.

    Je peux sûrement t'aider mieux, mais il faut que je sache ce que tu appelles un freeze, combien de temps il dure, et quand il semble apparaitre. Généralement moins d'une seconde.
    au bout d'un certain temps (quarte courses, par exemple)? Juste après avoir commencé à conduire (le jeu permet de visiter la map librement, pas besoin de courses)
    lorsqu'il y quinze voitures à l'écran? même s'il n'y a aucune voiture je peux freeze (le jeu abuse un peu des particules de toute façon)
    lorsque schtroumpf grognon te regarde? héhé tu m'as bien fait rire avec cette question et même quand il me tourne le dos je freeze..
    Si tu veux on peut discuter de ça en privé ? (si tu veux sur skype : losdingtro)

  10. #10
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Les fps, c'est le nombre d'images calculées par secondes. lors d'un freeze d'une seconde, il y a mécaniquement plus d'une seconde pour une seule image, le fps est forcément en dessous de 1. S'il est affiché par un entier, tu auras 0 ou 1, selon les arrondis.

    Un freeze d'une seconde, c'est que tu as trop de calculs qui ralentissent l'affichage.
    Si le jeu est normalement codé, et c'est probable sur ce point, ca ne peut venir que des calculs liés au graphisme.


    Essaie de réduire les effets visuels secondaires. Notamment ceux marqués "dépendant de la carte graphique" ou GPU.
    Je pense au post traitement (hdr, blur/flou), au réglage correspondant au mipmapping, et aux shaders, qui sont potentiellement gourmands.
    Tu peux aussi envisager de réduire la taille des textures.

    Si ce genre d'amélioration ne change rien, annule les, et réduis les effets couteux en CPU.
    Si tu n'as pas l'indication CPU/GPU, prie et essaie ce qui semble cher.


    J'ai une autre hypothèse, c'est que la ville est générée procéduralement, et les freezes sont dus à la création de la ville.
    Après tout, si le problème ne vient pas des fonctions de calcul, c'est qu'il vient des données du calcul.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

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

Discussions similaires

  1. Probleme Excel ouvert depuis une autre application
    Par suffren123 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/08/2010, 10h45
  2. [WD14] Vérifier si un fichier est ouvert dans une autre application
    Par Gaautman dans le forum WinDev
    Réponses: 1
    Dernier message: 17/01/2010, 20h07
  3. [EJB2.1] Accéder à une classe EJB d'une autre application
    Par charleydc5 dans le forum Java EE
    Réponses: 0
    Dernier message: 28/09/2009, 19h08
  4. Réponses: 7
    Dernier message: 23/03/2005, 22h23
  5. Recuper les items de ListBox d'une autre application [API?]
    Par Shamanisator dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h32

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