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

C# Discussion :

[WPF] soucis optimisation + fonction GetWindowThreadProcessId


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Par défaut [WPF] soucis optimisation + fonction GetWindowThreadProcessId
    Bonjour,

    mon programme affiche des canvas suivant les processus lancés sur mon pc.

    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
     
      int z = 0;
                int id;
    //je recupere le handle du bureau
                IntPtr hwnd = GetWindow(GetDesktopWindow(), GetWindow_Cmd.GW_CHILD);
                while (hwnd != null && hwnd != IntPtr.Zero)
                {
    //sur chaque handle de mes processus lancés je get l'id...
                    GetWindowThreadProcessId(hwnd, out id);
    // Et enfin a partir de l'ID je recupere le nom du process
                    string nameProcess = Process.GetProcessById(id).ProcessName;
    //ce nom de processus je verifie s'il est bien dans mon dictionnaire.
                    Color c;
                    dictionnaryProcess.TryGetValue("System.Diagnostics.Process (" + nameProcess + ")", out c);
                    if (IsWindowVisible(hwnd))
                    {
                        RECT ProcRect;
                        GetWindowRect(hwnd, out ProcRect);
                        int H = (ProcRect.Bottom - ProcRect.Top) / coeff;
                        int W = (ProcRect.Right - ProcRect.Left) / coeff;
                        int left = ProcRect.Left / coeff;
                        int top = ProcRect.Top / coeff;
    //je dessine mon canvas
                        can.Children.Add(drawRectangle(W, H, top, left, c));
     
                        z++;
                    }
                    hwnd = GetWindow(hwnd, GetWindow_Cmd.GW_HWNDNEXT);
    comme j'appelle ces deux fonctions dans ma boucle while

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     GetWindowThreadProcessId(hwnd, out id);
     string nameProcess = Process.GetProcessById(id).ProcessName;
    pour recuperer le nom de chaque process. lorsque je deplace mon canvas qui represente un de mes processus. J'ai un leger temps d'attente. auriez vous une idee pour optimiser tout ca.

    En esperant avoir étais clair..

    merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser directement la méthode GetProcesses()?

    Sinon du coté des petites optimisation. Ton dictionnaire, pas besoin de faire la concaténation sur la clé, et d’ailleurs c'est une erreur d'utiliser le nom du processus en clé, utilise plutôt son PID (Propriété "Id" de la classe Process, ou la variable id de ta boucle).

    Enfin attention au petit bug sur "c", c'est bien de faire TryGetValue, c'est mieux de s’assurer que tu as obtenu une valeur viable, en contrôlant le retour de la méthode.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 41
    Par défaut
    Merci du conseil.

Discussions similaires

  1. Optimisation fonction MAX
    Par AurelGTS dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/05/2007, 19h26
  2. Soucis avec fonction confirm
    Par renaud26 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 16/03/2007, 11h54
  3. Optimisation : fonction vide ou test
    Par bolhrak dans le forum C++
    Réponses: 2
    Dernier message: 15/07/2006, 19h31
  4. [TSQL] Optimisation fonction levenshtein
    Par Adi81 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/03/2006, 15h22
  5. [Optimisation][Fonction]calcul du nombre de jours ...
    Par m-mas dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 26/10/2005, 14h39

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