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

Windows Discussion :

WinAPI - application légère


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 382
    Points : 73
    Points
    73
    Par défaut WinAPI - application légère
    Bonjour j'aimerais savoir si c'est normal.
    Je créer une application sans fenêtre.

    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
    
    int WINAPI WinMain (HINSTANCE hInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    {
        hThisInstance = hInstance ;
    
        WNDCLASSEX wincl;
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;
        wincl.style = CS_DBLCLKS;
        wincl.cbSize = sizeof (WNDCLASSEX);
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;
        wincl.cbClsExtra = 0;
        wincl.cbWndExtra = 0;
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        if (!RegisterClassEx (&wincl))
            return 0;
            
        MSG messages;
        while (GetMessage (&messages, NULL, 0, 0))
        {
            TranslateMessage(&messages);
            DispatchMessage(&messages);
        }
    
        return messages.wParam;
    }

    Et la consomation de RAM est de 2200Ko.
    COmment faire pour avoir des application lègère. genre 800Ko ?
    De plus est-il possible d'avoir une application qui ne propose que un icone dans le systray pour intéragir avec l'utilisateur ?

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Je dois dire que je ne sais pas.
    J'ai fait plusieurs essais avec /NODEFAULTLIB en sélectionnant uniquement les libs que j'utilisais (la CRT, Kernel32, User32, GDI32) et j'ai directement 2.4 Mo...

    Si tu veux vraiment faire des applications légères, tu peux essayer des applications sans la CRT, vu que celle-ci fait 612+536 Ko...
    GDI32 semble assez légère (274ko) mais utilise USER32 (~500ko) qui elle-même utilise d'autres DLL en "Delay-load" (en clair, ne charge que si besoin).

    Pour Kernel32, tu ne peux pas t'en passer, pas plus que de user32 si tu fais une application graphique...


    Pour les icônes dans la barre des tâches, elles sont rattachées à des fenêtres, visibles ou non. Une icône qui n'est pas rattachée à une fenêtre disparait quand tu passes la souris dessus...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 382
    Points : 73
    Points
    73
    Par défaut
    Je n'ai que Kernel32, User32, GDI32 en linker.
    On ne peut pas faire plus léger donc ...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Si tu n'es pas en NODEFAULTLIB, tu auras la CRT avec toi.

    Sinon, tu peux essayer avec une version statique de la CRT, si tu l'utilises peu. Je ne sais plus exactement où ça se change, mais tu dois passer de "Multithreaded DLL" à "Multithreaded"...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 382
    Points : 73
    Points
    73
    Par défaut
    Je suis sous code::blocks. merci de ton aide mais bon je crois bien que je suis obligé d'après ce que tu dit de garde
    Kernel32, User32, GDI32...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    J'ignore si on peut utiliser une version statique de la CRT sous code::blocks, ni même si on peut se passer d'elle.
    En conséquence, j'ai bien peur que tu te retrouves forcément avec la CRT en plus de Kernel32 et User32 (GDI32 pourrait bien être facultative).

    PS: Dans le gestionnaire des tâches, la mémoire utilisée n'est pas la seule chose à prendre en considération : La "taille de la mémoire virtuelle" peut être intéressante aussi. Curieusement, il arrive souvent qu'elle soit inférieure à la mémoire utilisée...

Discussions similaires

  1. plugin ou application légère ?
    Par sergeh dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 22/07/2011, 17h48
  2. Creer une application client server en WinApi
    Par raphchar dans le forum Réseau
    Réponses: 2
    Dernier message: 17/09/2009, 14h50
  3. Cherche BDD simple, légère pour toute petite application
    Par sp2308 dans le forum Bases de données
    Réponses: 22
    Dernier message: 30/01/2009, 14h49
  4. Application stand-alone légère
    Par olof dans le forum Windows
    Réponses: 5
    Dernier message: 07/03/2006, 23h39
  5. Réponses: 2
    Dernier message: 15/04/2002, 13h56

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