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

Visual C++ Discussion :

probleme d'execution d'un programme


Sujet :

Visual C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut probleme d'execution d'un programme
    Bonjour,

    Le probleme que j'ai en ce moment est le suivant:
    J'utilise Visual c++ 2005 express edition, et quand j'execute un programme a partir de l'IDE, je n'obtiens pas le meme résultat que quand je l'execute a partir de l'explorateur.

    Le programme est un programme Windows, il doit afficher les processus en cours d'execution (c'est la où les résultats sont différents), il utilise:
    -la fonction EnumProcesses.
    -un controle List View
    -GetProcessId
    -OpenProcess

    Je ne sais pas s'il est nécessaire de donner le code source, mais si je me trompe, dites-le moi.

    Merci d'avance pour toutes les réponses.

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    est ce que tu utilises la meme version (release ou debug) ?

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Est-ce que tu accèdes à des fichiers?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    alors, oui j'utilise la meme version (j'ai fait attention quand meme ), et non je n'accede pas à un fichier.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    une precision : version debug.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Quelle est précisément la différence de résultats?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    la différence se situe au niveau de l'affichage des processus dans la list view.
    Les noms des processus sont incorrects(tous les memes)
    J'hesite a envoyer le code source, je crois qu'il serait totalement incomprehensible.

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu peux toujours essayer, c'est là qu'on verra s'il est incompréhensible ou non...

    Moi, j'utilise CreateToolHelp32Snapshot(), qui a le mérite de marcher aussi sous Win9x. Tu devrais peut-être essayer...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut le code
    bon voila le code, j'ai revérifié, toujours la meme erreur :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    #include <windows.h>
    #include <commctrl.h>
    #include <psapi.h>
    #include "resource.h"
     
    #define IDC_COLUMN_NAME	1
    #define IDC_COLUMN_ID	2
     
    int CurrentSelection;
    HWND	h_list, hDlg;
    DWORD	proc_array[200];
    DWORD	cbreturn;
    LVITEM	listview[200];
    LVCOLUMN name;
    LVCOLUMN id;
    HINSTANCE MainInstance;
     
    bool PrintProcesses();
     
    BOOL CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    hDlg = hWnd;
    switch(uMsg)
            { 
                 case WM_INITDIALOG:
                      PrintProcesses();
                      break;
     
                 case WM_CLOSE:
                      EndDialog(hWnd,0);
            }    
    return NULL;
    }
     
    bool PrintProcesses()
    {
    	EnumProcesses(&proc_array[0], 1024, &cbreturn);
    	h_list = GetDlgItem(hDlg, IDC_LIST_PROCESS);
    	name.pszText = "name of process:";			//creation des colonnes
    	name.mask	 = LVCF_TEXT | LVCF_WIDTH;
    	name.cx		 = 200;
    	id.pszText	 = "process id";
    	id.mask		 = LVCF_TEXT | LVCF_WIDTH;
    	id.cx		 = 50;
    	ListView_InsertColumn(h_list, IDC_COLUMN_NAME, &name);	//insertion
    	ListView_InsertColumn(h_list, IDC_COLUMN_ID, &id);
    	HANDLE prochandle;
    	register int i;
    	for(i = 0; i < (cbreturn / sizeof(DWORD)); i++)
    	{
    		prochandle = OpenProcess(PROCESS_ALL_ACCESS, false, proc_array[i]);
    		listview[i].pszText = new char[30];
    		DWORD procid = GetProcessId(prochandle); // id du processus
    		if(procid != 0 && procid != 4)
    			GetModuleBaseName(prochandle, NULL, listview[i].pszText, 30); //nom du processus
    		if (procid == 0)
    			listview[i].pszText = "idle";
    		if (procid == 4)
    			listview[i].pszText = "SYSTEM";
    		listview[i].mask	= LVIF_TEXT;
    		listview[i].iItem	= i;
    		ListView_InsertItem(h_list, &listview[i]); 
    	}
    	return 1;
    }
     
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hInst, LPSTR CmdLine, int show)
    {
        MainInstance = hInstance;
        DialogBoxParam(MainInstance, "LOCALWIN", NULL, WndProc, NULL);
        return NULL;
    }
    IDC_LIST_PROCESS est un idendifiant. Défini dans "resource.h"
    La deuxieme colonne ajoutée nommée "process id" ne sert a rien.

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DWORD	proc_array[200];
    <snip>
    EnumProcesses(&proc_array[0], 1024, &cbreturn);
    Citation Envoyé par [url=http://msdn2.microsoft.com/en-gb/library/ms682629.aspx]MSDN[/url]
    cb
    [in] Size of the pProcessIds array, in bytes.
    Je ne suis même pas allé plus loin, ce n'est vraiment pas du code rigoureux.
    S'il y a une erreur comme ça, il y en a sûrement des tas d'autres.

    De plus, nombre de ses variables sont globales pour rien, puisqu'elles n'ont même pas besoin d'être persistantes...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut oups
    oups j'avais pas fait gaffe.
    Néanmoins , j'ai corrigé cette faute, et ça ne marche toujours pas.

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    As-tu vérifié tout simplement les valeurs de retour des OpenProcess() & Co?
    De plus, la mémoire allouée par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listview[i].pszText = new char[30];
    est leakée.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/03/2010, 16h36
  2. probleme d'execution d'un programme
    Par SYRENE dans le forum C++Builder
    Réponses: 1
    Dernier message: 25/06/2008, 07h37
  3. probleme d execution programme perl
    Par calimero642 dans le forum Langage
    Réponses: 4
    Dernier message: 13/07/2006, 12h49
  4. Réponses: 20
    Dernier message: 23/06/2006, 20h49
  5. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50

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