Aller au contenu

[PCi Tool] Battery Benchmark Suite


David_L

Messages recommandés

Merci pour les détails je vais regarder ça ;)

Edit : j'ai modifié dans le code pour la forme, puis ça me simplifie quelques passage au niveau de la lecture. Mais ça ne semble pas changer grand chose. Il semble que le niveau de mémoire grimpe au fur et à mesure qu'il parcourt le texte, ensuite, ça se stabilise.

Je vais essayer de voir ce qui fait monter la mémoire (c'est devenu ma plus grande part de travail au boulot donc ça serait plus pour le fun, bien que ça aiderait car si le GC travaille bien à plein régime ça pourrait aussi fausser les calculs de temps de batterie), le seul truc qui risque de poser problème c'est la désactivation en cas de perte de focus de notepad qui risque de rendre contraignant l'analyse mémoire (quoique je n'ai pas encore pu voir si ça posait vraiment problème car [maintenant je m'en souviens] je ne peux pas installer .NET 4 sur ce pc pour une obscure raison de conflit avec qq chose).

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 80
  • Créé
  • Dernière réponse

Disons que pour cette appli spécifiquement, j'aurais pu baisser le niveau de .net nécessaire, m'enfin comme tu dis, c'est pour un public spécialisé, et de toutes façons d'autres de mes applis nécessitent .net 4.0 pour fonctionner (multi-thread facile powa), donc autant vous habituer :D

Puis comme déjà évoqué à d'autres endroits, je reste un développeur du dimanche qui code pour ses besoins propre. On a juste décidé * d'enfin * partager le boulot de manière publique. L'utilisation de .Net est surtout là pour me simplifier ma vie de codeur feignasse, c'est pas que j'ai jamais eu la moindre affinitée avec C++ (et pourtant, j'en ai passé des heures à me flageler...), mais bon. ^^

Mais le débat était plus sur la solution à utiliser sur le portage éventuel sous Linux, rien n'est figé à ce niveau, je fais surtout du Mono pour là aussi me simplifier la vie, mais on évoluera peut être fonction des demandes.

Pour le reste, simuler une activité humaine me semble être une fausse bonne idée : elle n'est jamais la même. Je pense qu'il faut identifier des usages typiques, les rendre "simulables" de manière assez figée (pour avoir des résultats valables) et c'est ensuite l'analyse du testeur qui fera la pertinence et l'intérêt des résultats, avec leur mise en perspective. Sinon ça s'appelle réinventer Sysmark qui était chiant au possible pour des résultats pas toujours au top :D

Pour ça qu'on a différents outils en interne, dont un pour la vidéo et un autre pour le web via un panel de sites. Pendant un temps j'utilisais aussi une boucle de PCMark Vantage Productivity qui donnait des résultats pas mal, mais avec Damien on a décidé de favoriser la prise de note hors réseau qui décrit un usage "batterie maximale" réaliste pour la prise de note d'étudiant en amphi qui dit vouloir maximiser son autonomie, mais qui n'a juste pas d'amis à aller Poker sur Facebook :transpi:

Sinon pour les directions communes, tu peux toujours venir aider, on est jamais assez de doigts de codeurs / rédacteurs dans la maison :D

Lien vers le commentaire
Partager sur d’autres sites

Si seulement j'avais du temps pour t'aider, je le ferai volontiers :D Je suis sur OCCT, sur un autre projet moins sérieux et plus pour le fun (vengeance ?) en ce moment, et le temps, c'est vraiment ce qu'il me manque ;)

Mais bon courage ! Et pour le choix de .net, je comprends tout à fait. J'ai fait le même. Feignasse s on veut, mais bon, il faut dire "c'est plus facilement maintenable pour le développeur" :D

Lien vers le commentaire
Partager sur d’autres sites

Je vais essayer de voir ce qui fait monter la mémoire (c'est devenu ma plus grande part de travail au boulot donc ça serait plus pour le fun, bien que ça aiderait car si le GC travaille bien à plein régime ça pourrait aussi fausser les calculs de temps de batterie), le seul truc qui risque de poser problème c'est la désactivation en cas de perte de focus de notepad qui risque de rendre contraignant l'analyse mémoire (quoique je n'ai pas encore pu voir si ça posait vraiment problème car [maintenant je m'en souviens] je ne peux pas installer .NET 4 sur ce pc pour une obscure raison de conflit avec qq chose).

La version que je fais tourner là culmine à 6.6 Mo à plein hein, je ne pense pas qu'il y ait de souci spécifique. J'avais surtout peur de deux choses :

Que le fait de taper vite (50 ms pour le timer) chargerait un peu le CPU, ça ne semble pas être le cas.

Que l'analyse du focus qui se base sur une lecture du titre de la fenêtre (je n'ai pas mieux pr le moment) charge le CPU, mais là aussi ça semble sans trop d'effet.

Après si vous détectez des effets négatifs, il faudra voir pour optimiser, mais quoi qu'il en soit, toutes les machines ont à faire face à la même "charge" donc au pire du pire, ça simulera une prise de note avec un anti-virus en tâche de fond :D

Lien vers le commentaire
Partager sur d’autres sites

Si seulement j'avais du temps pour t'aider, je le ferai volontiers :D Je suis sur OCCT, sur un autre projet moins sérieux et plus pour le fun (vengeance ?) en ce moment, et le temps, c'est vraiment ce qu'il me manque ;)

Mais bon courage ! Et pour le choix de .net, je comprends tout à fait. J'ai fait le même. Feignasse s on veut, mais bon, il faut dire "c'est plus facilement maintenable pour le développeur" :D

Disons que j'ai toujours préféré la syntaxe et la façon de faire de .Net à tous les autres langages que j'ai pu rencontrer. Mais aussi la simplicité pour pas mal de choses dont j'ai besoin pour mes outils. Il faut dire que j'ai plus des besoin de type "GUI" que de faire de l'algo de puriste en ASM / C / ... :D Ceci explique cela je pense. Puis lorsque j'ai eu besoin de faire des outils simples qui gèrent les différents coeurs des CPU, l'arrivée de .Net 4 a sauvé la gestion de mon emploi du temps, qui est aussi bien chargé ^^

Lien vers le commentaire
Partager sur d’autres sites

le fait de taper vite (50 ms pour le timer) chargerait un peu le CPU, ça ne semble pas être le cas.

je viens de faire un petit calcul rapide ça fait environ du 200 mots à la minute (en comptant 1 caractère toutes les 50ms, 5 caractères par mots en moyenne + 1 espace entre les mots), je ne pense pas que l'étudiant du fond de son amphi puisse atteindre ce rythme :D (la moyenne selon wikipedia est de 33 mots par minutes). Donc vous pouvez même réduire ou alors créer un mode "Guronzan" (ha la fac ... quelle belle période de ma vie), un mode "cuite" et un mode "Barbara Blackburn" pour gérer différents cas/vitesses :)

Que l'analyse du focus qui se base sur une lecture du titre de la fenêtre (je n'ai pas mieux pr le moment) charge le CPU, mais là aussi ça semble sans trop d'effet.

Pas de soucis de ce coté la fonction GetWindowText() (je suppose que vous utilisez cette fonction pour avoir le titre) prend quelques cycles d'envoi de messages (SendMessage(WM_*)) pour récupérer le titre mais sans trop charger le CPU. une autre méthode pourrait être de récupérer le HWND de la fenêtre de notepad lors de la première recherche puis ensuite de simplement appeler GetForegroundWindow() et tester si le HWND renvoyé est le même que celui obtenu lors de la première recherche, ça évitera les SendMessage pour récupérer le titre et le cas où l'utilisateur avait déjà un notepad ouvert avant le lancement du programme.

Lien vers le commentaire
Partager sur d’autres sites

Pas de soucis de ce coté la fonction GetWindowText() (je suppose que vous utilisez cette fonction pour avoir le titre) prend quelques cycles d'envoi de messages (SendMessage(WM_*)) pour récupérer le titre mais sans trop charger le CPU. une autre méthode pourrait être de récupérer le HWND de la fenêtre de notepad lors de la première recherche puis ensuite de simplement appeler GetForegroundWindow() et tester si le HWND renvoyé est le même que celui obtenu lors de la première recherche, ça évitera les SendMessage pour récupérer le titre et le cas où l'utilisateur avait déjà un notepad ouvert avant le lancement du programme.

Pour la vitesse de frappe, tu verras à l'utilisation que finalement ça ne fait pas si vite que ça, mais globalement ça ne changera pas grand chose au résultat je pense.

Pour l'idée de récupérer l'HWND de la fenêtre et de récupérer ensuite, je prend note ça peut être une bonne idée et me permettre de gérer d'autres cas, notamment mes soucis de langue :D

Lien vers le commentaire
Partager sur d’autres sites

Si seulement j'avais du temps pour t'aider, je le ferai volontiers :D Je suis sur OCCT, sur un autre projet moins sérieux et plus pour le fun (vengeance ?) en ce moment, et le temps, c'est vraiment ce qu'il me manque ;)

Mais bon courage ! Et pour le choix de .net, je comprends tout à fait. J'ai fait le même. Feignasse s on veut, mais bon, il faut dire "c'est plus facilement maintenable pour le développeur" :D

Disons que j'ai toujours préféré la syntaxe et la façon de faire de .Net à tous les autres langages que j'ai pu rencontrer. Mais aussi la simplicité pour pas mal de choses dont j'ai besoin pour mes outils. Il faut dire que j'ai plus des besoin de type "GUI" que de faire de l'algo de puriste en ASM / C / ... :D Ceci explique cela je pense. Puis lorsque j'ai eu besoin de faire des outils simples qui gèrent les différents coeurs des CPU, l'arrivée de .Net 4 a sauvé la gestion de mon emploi du temps, qui est aussi bien chargé ^^

Non mais tu compares .net un framework donc, à un langage de programmation... Compare .net à QT, ça sera déjà plus juste. ;) Qt est un framework pour du C++ et d'autres langages (pyton par exemple). Si tu compares le framework QT à .net que ça soit pour faire des interfaces graphiques etc, les deux ont leurs avantages et inconvénients, mais une chose est sûre pour faire quelque chose de simple, c'est aussi facile pour les deux! La seule différence sera l'affinité du développeur pour la logique de l'un ou l'autre. ;)

Idem pour les thread je n'ai aucun problème en .net 2.0... pas besoin de .net 4.0 pour ça. :o

Y a des choses bien plus simple à faire en QT qu'en .net et inversement. ;) Pour Windows .net s'impose vu ce que tu veux faire, pour linux mono c'est quand même le vrais faux mauvais choix. :/

Lien vers le commentaire
Partager sur d’autres sites

Pour ça qu'on a différents outils en interne, dont un pour la vidéo et un autre pour le web via un panel de sites. Pendant un temps j'utilisais aussi une boucle de PCMark Vantage Productivity qui donnait des résultats pas mal, mais avec Damien on a décidé de favoriser la prise de note hors réseau qui décrit un usage "batterie maximale" réaliste pour la prise de note d'étudiant en amphi qui dit vouloir maximiser son autonomie, mais qui n'a juste pas d'amis à aller Poker sur Facebook :transpi:

Sinon pour les directions communes, tu peux toujours venir aider, on est jamais assez de doigts de codeurs / rédacteurs dans la maison :D

Dans la prise de note tu oublies une charge/consommation de cpu que notepad ne fourni pas:

Le correcteur othographique, sur un texte complet c'est non négligeable je pense, enfin si on veut être le plus proche possible de la réalité.... :ouioui:

N'ayant pas testé ton logiciel, tu fais aussi des phases de sauvegarde je suppose? Et espère? :)

Lien vers le commentaire
Partager sur d’autres sites

Pour ce qui est de .Net, j'évoquais surtout mon choix par rapport à mes besoins propres... et comme je ne fais quasi que du C# :D Si tu reprends le cas de .Net 4.0, par exemple, c'est surtout que l'arrivée de Parrallel.for m'a pas mal simplifié les choses. Avec C/C++ comme Ct n'a jamais été vraiment dispo, il y avait des choses comme la librairie TBB d'Intel (qui semble pas mal lié aux nouveautés MT de .Net 4.0 je trouve) qui avait une fonction similaire, mais je trouvais le fonctionnement plus "accessible".

Une fois de plus, dans l'équipe on développe surtout pour arriver à nos fins dans les tests (GUI, benchmarks...), ou pour des fonctions internes qui nous sont utiles (extension maison, applis mobiles, délires au sein de l'équipe...). Cela reste un boulot "secondaire" pour lequel nous n'avons malheureusement pas des heures (selon ma copine, j'y passe déjà beaucoup trop de temps, dès qu'elle voit un IDE s'allumer, elle est désespérée :transpi:). Coder est un moyen de bosser mieux, différemment de nos confrères, pas une fin en soi dans notre cas. On recherche donc souvent la simplicité et l'efficacité d'une solution.

Je fais donc en fonction de mes capacités, et des besoins de l'appli (pour ça que je varie du script Bash à C# en passant par du Python quand j'ai vraiment envie de rigoler un coup :D).

Sinon pour en revenir à l'appli, je suis parti sur Notepad à la base pour tester un peu le principe, pour faire dans l'usage minimal (une fois de plus on a d'autres outils pour les usages plus "chargés") et parce que je ne voulais pas qu'une installation d'appli tierce soit nécessaire. Word est donc exclu, tout comme les logiciels du genre, mais je peux voir avec Wordpad bien que je ne sache pas si la correction ortho y es si développée que ça. Puis le texte est un Lorem ipsum, donc je ne suis pas sur que le Latin soit très adapté :p

Pour la backup, je n'avais pas pensée à l'idée, je rajoute ;)

Lien vers le commentaire
Partager sur d’autres sites

TIen peut-être que ça t'aidera david pour ton développement, voilà ce que j'utilise pour envoyer des évènements clavier à un processus en particulier:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Security.Principal;
using System.Runtime.InteropServices;


       [DllImport("user32.dll")]
       static extern bool SetForegroundWindow(IntPtr hWnd);
       [DllImport("user32.dll", EntryPoint = "PostMessage")]
       public static extern int PostMessage(int hwnd, uint wMsg, int wParam, int lParam);
       [DllImport("user32.dll")]
       static extern int GetWindowText(int hWnd, StringBuilder text, int count); 


       public void blabla()
{
             Process[] myProcesses;
           //on récupère la liste des processus qui contiennent le nom winword, donc à adapter avec le logiciel que tu veux!
           myProcesses = Process.GetProcessesByName("WINWORD");
           //const int nChars = 256;
           //StringBuilder Buff = new StringBuilder(nChars);
           //GetWindowText(myProcesses[0].MainWindowHandle,Buff,nChars)
           Thread.Sleep(2000);
           //MessageBox.Show(myProcesses[0].MainWindowTitle.ToString());
           //SetForegroundWindow(myProcesses[0].MainWindowHandle);
           SendKeys.Send("(^%a)");
           SendKeys.Flush();
           //Application.DoEvents();
           Thread.Sleep(2000);
           SendKeys.Send("+{tab}");
           SendKeys.Flush();
           SendKeys.Send("+{down}");
           SendKeys.Flush();
           Thread.Sleep(2000);
           Application.Exit();
           //SetForegroundWindow(myProcesses[0].MainWindowHandle);

}

C'est qu'un exemple tout pourri que j'avais fait quand je cherchais quelque chose mais ça te sera peut-être utile non?

Pas de problème de focus de fenêtre, par contre je ne sais pas si ça marche toujours sur les dernières versions de windows...

Dans les commentaires c'était des tests précédents, je te l'ai laissé des fois que tu y trouves des choses intéressantes... C'est brute de fonderie vu que ce n'était que des tests fait sous xp, mais si jamais ça t'aide. ;)

EDIT: si ce code gêne sur ce thread, supprime mon poste après avoir récupéré bien sûr. Je reste toujours présent en mp ou autre si besoin. ;)

Lien vers le commentaire
Partager sur d’autres sites

Non pas de soucis, de toutes façons vu comme le thread est parti, autant continuer à parler code :D Je regarde ça dès que je suis posé, je suis en train de voir pour une mise en place de projet sur un hosting de codes libres :)

J'aurais qques questions, même si j'ai déjà un avis sur le sujet :

  • GPL v2 ou v3, cela pose un souci à qq'un ? (je ne pense pas mais je demande toujours :D)
  • Pour l'hosting, je suis plus familiarisé à Google Code / SVN, vous y voyez un inconvénient ? (désolé pour les fans de git :p)

Lien vers le commentaire
Partager sur d’autres sites

Je suis d'accord que le 4.0 n'est pas particulièrement utile. Bon après je n'ai pas vu les applis pour lesquelles tu avais besoin de parallèlisation ! Mais développer en 2.0 avec un bon vieux threadpool des chaumières ça permettrait de passer rapidement à mono.

Faudrait faire des concours de patch pour améliorer le soft avec le moins de lignes possibles et le moins de consommation ressources possibles :francais:

Pour SVN, ça apprendra la diversité aux intégristes de GIT :D

Lien vers le commentaire
Partager sur d’autres sites

Non pas de soucis, de toutes façons vu comme le thread est parti, autant continuer à parler code :D Je regarde ça dès que je suis posé, je suis en train de voir pour une mise en place de projet sur un hosting de codes libres :)

J'aurais qques questions, même si j'ai déjà un avis sur le sujet :

  • GPL v2 ou v3, cela pose un souci à qq'un ? (je ne pense pas mais je demande toujours :D)
  • Pour l'hosting, je suis plus familiarisé à Google Code / SVN, vous y voyez un inconvénient ? (désolé pour les fans de git :p)

LGPL V3 ça rox. :o (la V2 tu risques les parasitages, donc autant partir sur la V3 pour être tranquille...)

Sinon après perso je n'y vois acun inconvénient entre svn et git, je ne sais pas me servir des deux. :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Pourtant SVN est pas mal utile même quand on code dans son coin :D (backup online, différentiel entre les différents commits..).

Et sinon entre GPL et LGPL, je penche plus pour la première dans la majorité des cas, la viralité m'intéresse. Si on bosse sur ces codes que ce soit en interne ou ailleurs, et que d'autres utilisent, autant qu'ils fassent de même en publiant ;)

Lien vers le commentaire
Partager sur d’autres sites

Je bosse à l'ancienne moi. :D Je fais des rsync vers mon serveur home, et je sauvegarde en archive zip quand une version est releasée. :D

Archive que je push aussi sur un dédié pour être sûr de l'avoir en triple.

C'est pour ça que le svn ou git je ne connais pas du tout. :transpi:

(je suis tout le temps tout seul à bosser sur mes projets ceci expliquant cela...)

Pour la licence :chinois: Le but serait d'obliger tout le monde à diffuser ses modifications on est d'accord. :ouioui:

Lien vers le commentaire
Partager sur d’autres sites

Mise à jour de l'outil en prenant en compte les différentes remarques : utilisation de Wordpad, enregistrement du texte, correctifs dans le code... Du coup changement de nom (plus générique) et passage en 0.2 parce que je suis un ouf :D

Préparation pour la publication GPL v3 avec le second outil de mesure de l'autonomie (durant le WE surement, si Marvel VS Capcom 3 ne m'achève pas :D).

Lien vers le commentaire
Partager sur d’autres sites

Mise à jour de l'outil en prenant en compte les différentes remarques : utilisation de Wordpad, enregistrement du texte, correctifs dans le code... Du coup changement de nom (plus générique) et passage en 0.2 parce que je suis un ouf :D

Préparation pour la publication GPL v3 avec le second outil de mesure de l'autonomie (durant le WE surement, si Marvel VS Capcom 3 ne m'achève pas :D).

Du coup, le problème du focus est réglé? Mon code t'as été utile ou pas du tout? :zarb:

Lien vers le commentaire
Partager sur d’autres sites

Je bosse à l'ancienne moi. :D Je fais des rsync vers mon serveur home, et je sauvegarde en archive zip quand une version est releasée. :D

Archive que je push aussi sur un dédié pour être sûr de l'avoir en triple.

C'est pour ça que le svn ou git je ne connais pas du tout. :transpi:

(je suis tout le temps tout seul à bosser sur mes projets ceci expliquant cela...)

Pour la licence :chinois: Le but serait d'obliger tout le monde à diffuser ses modifications on est d'accord. :ouioui:

Si tu savais... moi, je backupe régulièrement ma vmware de dev, carrément :D Alors...

Lien vers le commentaire
Partager sur d’autres sites

Je n'avais pas exactement un souci avec le focus, mais la façon de faire était bancale. J'utilisais déjà à peu près la même méthode que toi. Par contre je n'ai pas compris le pourquoi de tes Flush, avec Sendkeys, c'est quand on fait un wait, pour tout envoyer en groupé non ?

J'ai amélioré le système avec la proposition qui m'avait été faite de lire le titre de la fenêtre au lancement, puis de vérifier si elle change pour vérifier qu'il n'y a pas de perte de focus.

De toutes façons tu verras ça quand j'aurais publié le code (faut que je nettoie celui de l'autre outil d'abord, j'ai des enchainements d'if qui me donnent des envies de suicide :D

Lien vers le commentaire
Partager sur d’autres sites

Pour la vitesse de frappe, tu verras à l'utilisation que finalement ça ne fait pas si vite que ça, mais globalement ça ne changera pas grand chose au résultat je pense.

Je chipote mais je viens de faire l'essai avec la nouvelle version (en fait y avait pas de problème pour l'installation de .NET, juste avec mes doigts). En une minute ça a tapé 228 mots du "lorem ipsum" alors que moi je n'ai pu taper que 25 mots à la main du "lorem ipsum" (ce qui pourrait correspondre à la saisie type "production de rapport" car pondre du latin n'est pas mon fort) et 43 mots en mode recopie (j'ai recopié ton premier message de ce thread "Yopla tout le monde" jusqu'à "afin que tout le monde puisse").

Sachant que je tapes au clavier avec mes 10 doigts sans regarder l'écran.

enfin bon ça change rien au test effectivement :)

par contre un truc bien à faire c'est mettre la fenêtre du programme toujours au premier plan, parce que chez moi wordpad se lance en plein écran et du coup je ne vois plus la fenêtre en dessous.

Ah et juste arrêter le chrono avant d'afficher le message d'erreur de perte de focus, car la en écrivant ce message il s'est écoulé 5 minutes dans la fenêtre de résultat, du coup on ne peut pas savoir au bout de combien de temps la perte de focus à eu lieu (le même genre de soucis qui me fait préférer Supercopier à la copie intégrée de windows quand je dois transférer un disque vers un autre [oui je sais il y a ghost ou dd pour ça, mais ....])

Lien vers le commentaire
Partager sur d’autres sites

Si tu savais... moi, je backupe régulièrement ma vmware de dev, carrément :D Alors...

D'une certaine manière c'est le plus simple, mais je travaille sur plusieurs machines, et pas toujours en local... donc bon. SVN & co me sauve pas mal la mise, même si j'ai longtemps utilisé LiveMesh (Bcp moins classe pour le versioning).

Lien vers le commentaire
Partager sur d’autres sites

Pour la vitesse de frappe, tu verras à l'utilisation que finalement ça ne fait pas si vite que ça, mais globalement ça ne changera pas grand chose au résultat je pense.

Je chipote mais je viens de faire l'essai avec la nouvelle version (en fait y avait pas de problème pour l'installation de .NET, juste avec mes doigts). En une minute ça a tapé 228 mots du "lorem ipsum" alors que moi je n'ai pu taper que 25 mots à la main du "lorem ipsum" (ce qui pourrait correspondre à la saisie type "production de rapport" car pondre du latin n'est pas mon fort) et 43 mots en mode recopie (j'ai recopié ton premier message de ce thread "Yopla tout le monde" jusqu'à "afin que tout le monde puisse").

Sachant que je tapes au clavier avec mes 10 doigts sans regarder l'écran.

enfin bon ça change rien au test effectivement :)

par contre un truc bien à faire c'est mettre la fenêtre du programme toujours au premier plan, parce que chez moi wordpad se lance en plein écran et du coup je ne vois plus la fenêtre en dessous.

Ah et juste arrêter le chrono avant d'afficher le message d'erreur de perte de focus, car la en écrivant ce message il s'est écoulé 5 minutes dans la fenêtre de résultat, du coup on ne peut pas savoir au bout de combien de temps la perte de focus à eu lieu (le même genre de soucis qui me fait préférer Supercopier à la copie intégrée de windows quand je dois transférer un disque vers un autre [oui je sais il y a ghost ou dd pour ça, mais ....])

Je note pour le souci du timer qui ne s'arrête pas. * fixed *

Pour la vitesse de frappe, au pire je mettrai un paramètre :p

Pour la gestion de wordpad, tu peux le resizer, ça n'intervient pas sur la perte de focus (faudra que je vois si la mise en 1er plan intervient sur mon envoi de touches à Wordpad).

Lien vers le commentaire
Partager sur d’autres sites

Je n'avais pas exactement un souci avec le focus, mais la façon de faire était bancale. J'utilisais déjà à peu près la même méthode que toi. Par contre je n'ai pas compris le pourquoi de tes Flush, avec Sendkeys, c'est quand on fait un wait, pour tout envoyer en groupé non ?

J'ai amélioré le système avec la proposition qui m'avait été faite de lire le titre de la fenêtre au lancement, puis de vérifier si elle change pour vérifier qu'il n'y a pas de perte de focus.

De toutes façons tu verras ça quand j'aurais publié le code (faut que je nettoie celui de l'autre outil d'abord, j'ai des enchainements d'if qui me donnent des envies de suicide :D

Tu peux forcer la fenêtre au premier plan via ça avant d'envoyer un évènement clavier:

           Process[] myProcesses;
           // A remplacer par wordpad bien sûr. 
           myProcesses = Process.GetProcessesByName("WINWORD");
           //C'est cette ligne là qui te permet de remettre au premier plan ta fenêtre. 
           SetForegroundWindow(myProcesses[0].MainWindowHandle);

Le flush c'est juste pour vider le buffer, je ne sais pas si ce n'est pas nécessaire à certains moment pour ne pas tout planter. C'était du test donc c'est vraiment brut de fonderie. ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...