PresentMon -> interface graphique ( FPS monitoring ) [C#/WPF] - C#/.NET managed - Programmation
Marsh Posté le 02-11-2022 à 13:35:26
Contexte :
https://forum.hardware.fr/hfr/Overc [...] 7943_1.htm
Actuellement je récupère les données de MSI Afterburner
J’aimerais le rendre autonome
Je commence par les FPS
Le 1er lien du 1er post fonctionne en mod console
J’aimerais en faire une fonction qui me donnerait 2 variables
- FPS
- Processus target
Marsh Posté le 05-11-2022 à 15:00:56
Et si tu sais coder et que tu as déjà fait le reste de l'appli de ton lien, c'est quoi le problème que tu rencontres pour sortir le code et l'intégrer où tu veux ?
Un indice : ça commence dans le Main
Marsh Posté le 07-11-2022 à 16:15:58
TotalRecall a écrit : Et si tu sais coder et que tu as déjà fait le reste de l'appli de ton lien, c'est quoi le problème que tu rencontres pour sortir le code et l'intégrer où tu veux ? |
Ça n’aide pas
Pour info voici le code source du projet tel que je l’ai abandonné il y a 2 ans
( la version light / compteurs bleus )
https://drive.google.com/file/d/1iD [...] sp=sharing
A besoin de MSI Afterburner -> Installé et paramétré
C’est le problème
Mon niveau est codeur du dimanche
Pareil pour ReactJS ou la 3D visible ici :
https://d9so02tdw1aye.cloudfront.net/
Ce qui aiderait c’est du code
Le 1er lien du 1er poste en version Fenêtre ( Windows / WPF idéalement )
Ou un lien exploitable…
Marsh Posté le 07-11-2022 à 16:24:56
Sauf que t'as toujours pas expliqué ton problème.
Aucune idée de si ton truc du premier lien fonctionne pour tous les programmes, mais tu as l'air de dire que ça te convient, hormis que c'est du Console.
Et que tu es l'auteur d'un programme en C# qui fait du monitoring via WMI. Donc on peut supposer que tu sais développer.
Le code est court et plutôt simple, en 3 minutes de lecture j'ai compris le principe général de fonctionnement sans même l'exécuter, tout ce que t'as à faire c'est le copier coller, lancer le même code que le Main, et remplacer le Console.WriteLine dans OutputThreadProc par un truc qui envoie l'info là où tu veux l'afficher (avec un événement par exemple). Et là tu pourras afficher ça où tu veux.
Marsh Posté le 07-11-2022 à 19:16:42
Le problème c’est que je n’arrive pas à reproduire le code pour une Fenêtre
J suis trop con
Ici mon échec cuisant :
https://drive.google.com/file/d/1vX [...] sp=sharing
( une simple Fenêtre )
Edit :
Les WMI étaient pour la version 1
J ai rapidement switcher pour la mémoire partagée ( plus rapide )
Mais oui, on s en fout
Marsh Posté le 10-11-2022 à 17:02:05
https://drive.google.com/file/d/1gu [...] sp=sharing
Code sale
Mais il m’envoie de la data
J n arrive pas à afficher tous les processus comme dans le mode console
J’ai un problème avec mes List View
2 ans sans coder -> je suis rouillé
Et à un moment il faudra que je target le processus actif
Bleu -> OK
Rouge -> pas OK
Marsh Posté le 15-11-2022 à 20:45:06
https://drive.google.com/file/d/1EJ [...] sp=sharing
Code sale
Avancement
Problèmes connus :
Ne tue pas les processus fermés
Il me manque encore le target processus actif
Bleu -> OK
Rouge -> pas OK
Si vous avez des corrections à apporter j suis preneur
Edit :
maxcolmx a écrit : |
Correction
Je maîtrise le copier-coller
Marsh Posté le 16-11-2022 à 11:15:33
maxcolmx a écrit : |
La version console non plus
Donc je pense que je peux dire que j ai plus ou moins reproduis ( copier / coller ) le code pour WPF
Me reste le target
Marsh Posté le 16-11-2022 à 20:20:00
Récupération de l'identifiant côté focus
Récupération de l'identifiant côté FPS
Je pense les utiliser pour le "target"
Mais je devrais peut être utiliser les noms
J'n'ai plus qu'a trouver comment j'vais faire ça
Marsh Posté le 17-11-2022 à 20:57:45
maxcolmx a écrit : |
J penses avoir trouvé une solution
Elle vaut ce qu'elle vaut
Maintenant va falloir nettoyer tout ca
Marsh Posté le 19-11-2022 à 01:49:56
maxcolmx a écrit : |
Je vais bientôt partager le code
Le nettoyage prend plus de temps que prévu
Il ouvre et ferme des portes
( anciennes et nouvelles )
J’en profite pour prendre un peu de recul et vous partager mes pensées personnelles
-> le code ne ment pas
-> c’est pour ça que j’aime bien cette discipline
Mais je m’aperçois que c’est trop exigeant pour moi
EL-KRAKEN sera ma dernière contribution au code
Mais avant ça, faut le finir et le teaser
EL-KRAKEN… résurrection ?
EL-KRAKEN… le retour ?
Ouhai je cherche un titre accrocheur
Marsh Posté le 21-11-2022 à 22:56:22
https://drive.google.com/file/d/1C0 [...] sp=sharing
Nettoyage :
- j y vois plus claire
- il reste peut-être quelque coquilles
Target :
- 1ère tentative -> échec
J’avais tenté un truc du genre
Résultat = rechercher dans list COMBO, les FPS, ou ID PROCESS = ID FOCUS
- 2ème tentative -> fonctionnelle
J’ai bidouillé
- 3ème tentative -> échec
Un mixe de la 1ère et 2ème tentative
Si qq un à mieux, j suis preneur
Marsh Posté le 22-11-2022 à 16:18:19
maxcolmx a écrit : ... |
J ai trouver
Le gars du 2ème lien de mon 1er post avait déjà réglé le problème
Y a plus qu'a copier / coller
Bon par contre ca va foutre en l'aire pas mal de trucs
( je ne verrais plus tout les processus )
Mais en même temp c'est ce que je voulais faire
Je verrais bien...
Edit :
J'ai vu, je vais doubler la fonction OutputThreadProc()
Parce que je veux garder les autres fitures pour ceux qui viendraient ici dans le futur
Sinon pour info ça fonctionne
Et je voulais le faire +/- de cette façon
Ouhai à un moment je me suis dis : " Et ca ne serait pas mieux de filtrer directement à la source ? "
Le code arrive
Marsh Posté le 23-11-2022 à 17:46:30
maxcolmx a écrit : |
Erratum
J ai parlé trop vite
Son code ne fonctionne pas
Ca affiche le dernier processus de la liste <-> d ou mon erreur en test rapide
Donc à ce jour je n ai qu'une méthode fonctionnelle
Marsh Posté le 30-11-2022 à 10:18:05
maxcolmx a écrit : |
maxcolmx a écrit : |
maxcolmx a écrit : |
Idée de merde
-> Ne tue pas les processus fermés
Comportement par défaut
La doc confirme :
https://github.com/microsoft/perfvi [...] Monitor.cs
/* PAR DÉFAUT LES SESSIONS ETW SURVIVENT À LA MORT DU PROCESSUS QUI LES CRÉE ! */
Quid du comportement non par défaut ?
-> une prise de tête assurément
En l'état :
- j'ai un code qui fonctionne à défaut d'être élégant
- et faut avancer
Prochaine étape :
S'attaquer au matos
Open Hardware Monitor devrait faire le job
Qu'est ce qui pourrait mal se passer ?
Marsh Posté le 30-11-2022 à 10:39:38
Pour info :
Process.GetProcessById()
Donne de bon résultats
Ca filtre l'ID, le nom mais pas les FPS
Mais peut être que qq chose m'échappe
Marsh Posté le 30-11-2022 à 18:07:54
Le code :
https://drive.google.com/file/d/19l [...] sp=sharing
Propreté -> acceptable
Coquilles -> oui, probablement
Pour info :
Le code console C++ permet de filtrer un processus à l'exécution et d'afficher son FPS
https://azurplus.fr/comment-surveil [...] indows-10/
Comme je suis un malin je me suis baladé dans le code source ( C++ ) de PRESENT MON
L'idée est de copier la méthode ou au moins me donner une piste
Alors je retrouve bien le bidule
J'essaie de remonter la piste
Mais je fini toujours par me noyer à un moment
Marsh Posté le 30-11-2022 à 18:17:32
Plop,
Je ne comprends pas tout à tes posts (le style est particulier on va dire ) mais comme tu mentionnes Open Hardware Monitor, je te fais un petit feedback sur le sujet. Je m'en sers depuis des années comme dépendance dans une appli web qui me permet de monitorer un serveur.
C'est une très bonne solution, mais avec quelques carences (par exemple j'ai dû faire des évols dessus pour récupérer je ne sais plus quoi, notamment au niveau des DD et du SMART), mais surtout la fréquence de mise à jour est très aléatoire.
Par exemple la version actuellement dispo ne supporte probablement pas du tout les AMD Zen 4 et Intel Core 13x.
Et j'ai vu qu'il y a un fork qui semble beaucoup plus actif : https://github.com/LibreHardwareMon [...] areMonitor
Du coup je te conseille de le tester lui en premier.
Marsh Posté le 02-12-2022 à 21:47:26
@TotalRecall
Merci pour l info
@tous
Je confond PresentMon et PerfView depuis le début
PresentMon n'est jamais utilisé
PresentMon sert juste de modèle
Marsh Posté le 06-12-2022 à 20:41:17
maxcolmx a écrit : |
Ben en faite pas mal de choses
Déjà encore merci @TotalRecall
En vrac :
- FPS -> en sommeil
- feux sur le matos
- les tutos sont rares et imprécis
- mais j m en sort
- processeur et RAM ok
- je bloque sur la CG / j comprend pas / même méthode que proc et RAM
Code sale vers vous bientôt mais j suis preneur de code fonctionnel
Marsh Posté le 07-12-2022 à 14:23:51
Comment expliquer ca simplement ?
- Open Hardware Monitor -> l ancêtre non mis a jour
- Libre Hardware Monitor -> un fork mis à jour et traitant plus de données -> conseiller par TotalRecall
Mon code repose sur Libre Hardware Monitor -> je n accède pas à ma carte graphique
Par acquis de conscience je viens d essayer avec Open Hardware Monitor et j y accède
Moralité... Fait chier
Bon ben j vais coder les 2 solutions et j aviserais...
Marsh Posté le 07-12-2022 à 17:27:24
Tu as tenté de poster une issue sur le github ? Ou de débogger un peu le truc ?
J'ai souvenir que le code est plutôt simple et propre, surtout si tu as une version qui fonctionne à côté...
Marsh Posté le 07-12-2022 à 22:12:46
TotalRecall a écrit : Tu as tenté de poster une issue sur le github ? Ou de débogger un peu le truc ? |
Non, je ne me sens pas légitime et c est sûrement moi qui ai loupé un truc
Mais tout de suite place au direct
Le code :
Lien mort
J ai enlevé les petites roues
( MSI Afterburner )
Je suis autonome
EL-KRAKEN est stand alone
Mais il reste du boulot
- ici avec Open Hardware Monitor
- trouver ou j ai merdé avec Libre Hardware Monitor
- pourquoi c est plus fluide dans Visual Studio VS l exe -> c est vexant
- avoir des noms de variable plus explicite
- nettoyer
- bla bla bla
Marsh Posté le 08-12-2022 à 20:20:02
Libre Hardware Monitor
Bon rien y fait -> accès carte graphique
Toutes tentatives = échecs
Ce qui m inquiète le plus, c est ce code en mode console:
https://github.com/LibreHardwareMon [...] areMonitor
Il voit le GPU intégrer au CPU mais pas mon GPU ( 3090 Ti FE )
Hypothèse -> désactiver le GPU intégré au CPU dans le bios ? -> ca me casse déjà les bonbons
L un d entre vous peut essayer ce code ? ->
Ou mieux -> me dire pourquoi j suis un gros débile
Marsh Posté le 09-12-2022 à 14:24:34
Je ne suis pas un gros débile
Voici mon raisonnement :
Libre Hardware Monitor est un fork
Ca veut dire qu au tout début leur code était très proche de l originale
Et qu il ont merdé au fil des versions
Je les ai donc toutes essayé avec le code console qu ils fournissent en example
0.8.5 -> ok
0.8.6 -> ok
0.8.7 -> ok
0.8.8 -> non
0.8.9 -> ok
0.9.0 -> ok
0.9.1 -> non
CQFD
J ai posé le diagnostique
Maintenant que faire ?
- garder Open Hardware Monitor au chaud en secours
- utiliser la dernière version fonctionnelle de Libre Hardware Monitor ( 0.9.0 )
Bon par contre je ne sais pas comment leur faire remonter l information
Marsh Posté le 09-12-2022 à 16:00:56
Bah tu peux ouvrir une issue sur leur github comme je te proposais précédemment, et utiliser dans ton soft la version 0.9.0 puisque tu as vu qu'elle fonctionne ! La 0.9.0 a l'air de dater de mai.
Si t'as pas essayé tu peux aussi utiliser la dernière version de leurs sources plutôt que la 0.9.1, si ça se trouve le problème est déjà identifié et corrigé.
Marsh Posté le 09-12-2022 à 16:58:15
J ai la source de la 0.9.1
Elle compile
L exe voit ma CG
Dans le code console :
J ai remplacé le NuGet par la dll
Mais non il ne voit ma pas CG
Marsh Posté le 10-12-2022 à 21:09:16
Le code :
Lien mort
L exe :
Lien mort
UX ( interface utilisateur ) :
Le moteur bien qu améliorable est fonctionnel, j ai donc travaillé sur la carrosserie
J ai mis ma menace à exécution
Inspiration :
https://www.google.com/imgres?imgur [...] egUIARCkAQ
Marsh Posté le 11-12-2022 à 10:20:11
LCDMono2 <- nom de la police utilisée <- doit être installée sur votre system
Et oui il y encore des détails à régler
Marsh Posté le 13-12-2022 à 20:17:27
Encore une version de test
Nettoyage et divers corrections mineurs -> j arrive à la fin
Toujours qq problèmes de fluidité -> exe VS débogage -> je ne comprends pas
Le code :
Lien mort
L exe :
Lien mort
Si vous avez des trucs à dire, c est le bon moment
Marsh Posté le 14-12-2022 à 19:26:30
maxcolmx a écrit : |
Bon... Je sais déjà que je n y arriverais pas
De plus il m a toujours cassé les choses ce graphique
Je le gardais par fierté mal placée et les heures passées dessus
Mais je dois me rendre à l évidence -> je ne sais pas faire
En plus il sert a rien
Enfin est il nécessaire ?
Apport il quelque chose ?
En l état non !
Autant le supprimer !
Voilà, c était ma pensée du soir
Bon match à tous
Marsh Posté le 20-12-2022 à 15:33:59
Il faut sauver le soldat graphique
Je l ai viré, lancé l exe -> il manque qq chose
J ai plusieurs angles d attaque et pour l instant le Thread.Sleep(1000) dans la class FPS_LIST ( truc qui calcul le nbr de FPS ) a une bonne tête de coupable
Je le saurais ce soir
Marsh Posté le 20-12-2022 à 19:22:08
maxcolmx a écrit : |
Erreur judiciaire
Angle d attaque n°2 :
Virer l animation du code behind pour la mettre dans le XMAL
Raisonnement -> XMAL à la priorité
Marsh Posté le 21-12-2022 à 00:09:33
maxcolmx a écrit : |
Théorie invalidée / idée de merde
Angle d attaque n°3 :
Raisonnement -> persistance rétinienne -> désynchroniser dans le code pour synchroniser visuellement
Marsh Posté le 21-12-2022 à 01:11:08
Ouhai bon celle-là, j l ai fait un peu à l instinct mais ca à l aire de fonctionner
C était le dernier verrou
Encore une version de test / blablabla
L exe :
Lien mort
Marsh Posté le 21-12-2022 à 13:53:38
Allé un premier petit retour
Quand on a plus le focus sur la fenetre du soft le model du CPU et du GPU n'apparait plus, il est remplacé par "processeur" et "Carte Graphique"
C'est de l'enculage de mouche mais autant laisser l'info du model
Focus sur El Kraken :
Focus sur le bureau :
Je suppose que l'ajout d'un menu "option" est prévu ? pour régler par exemple le temps de rafraichissements des sensors , si ce n'est pas le cas, ca serait une bonne idée
Marsh Posté le 31-10-2022 à 19:51:39
https://exchangetuts.com/monitoring [...] 8864494445
Convertir le code ci-dessus en fonction ?
Un truc du genre :
https://codeforum.org/threads/syste [...] range.520/
Mais de toute évidence quelque chose m’échappe…
Message édité par maxcolmx le 31-10-2022 à 20:37:34