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 :

Capture d'écran sous Windows


Sujet :

C

  1. #1
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 488
    Par défaut Capture d'écran sous Windows
    Bonsoir tout le monde,

    Je suis sous Windows XP et je travail actuellemnt sous Visual studio.
    J'aimerai réaliser une petite application permettant la capture d'écran de mon bureau , cependant je ne sais pas par ou commencer ni comment créer une telle application, c'est donc pour cela que je m'en remet à vous.

    Je ne vous demande pas de me donner directement la solution avec un code "pré-mâcher", je souhaite simplement que vous me donniez des indications et éventuellement un lien vers une documentation qui traite en détails de la marche à suivre pour réaliser une telle application.

    Merci d'avance
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Peut-être avec GetWindowDC et une copie de bitmap?

  3. #3
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 488
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Peut-être avec GetWindowDC et une copie de bitmap?
    merci de ta réponse, je vais orienter mes recherches vers cette fonction
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 401
    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 401
    Par défaut
    Je pense que c'est quand même assez incompatible avec le fait de débuter...
    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.

  5. #5
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 488
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Je pense que c'est quand même assez incompatible avec le fait de débuter...
    pourquoi ? cela requière une bonne connaissance en langage C.
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 401
    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 401
    Par défaut
    Justement.
    Une très bonne connaissance du C et de ses principes, ainsi qu'une bonne connaissance des principes de Windows également.
    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
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 488
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Justement.
    Une très bonne connaissance du C et de ses principes, ainsi qu'une bonne connaissance des principes de Windows également.
    d'accord
    pour ce qui est des connaissances en langage C je sais vers ou me trouné mais pour les "principes de Windows", j'oriente mes recherchent vers ou ?
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par smoove Voir le message
    mais pour les "principes de Windows", j'oriente mes recherchent vers ou ?
    Le forum Développement Windows ?

  9. #9
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Le forum Développement Windows ?
    Et vers la bibliographie spécifique pour ce système. Je dirais:
    http://windows.developpez.com/livres/#L157231995X
    http://www.amazon.com/Programming-Ap.../dp/1572319968

    (C'est vrai, ça fait de gros pavés. Il existe certainement des resources plus soft, mais c'est tout ce que j'ai dans mon bureau, et je trouve ces ouvrages plutôt bien - même si un peu vieillissant)

    et vers la doc officielle.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  10. #10
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 488
    Par défaut
    Merci de vos réponses
    Les pièges de l'Internet
    Helix, réponse à une intrusion


    "La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
    "Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton

  11. #11
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    Salut,
    en effet ce n'est pas tout simple il faut regarder les librairies MSDN, voilà un code qui fonctionne:

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    BOOL scr2png(LPCTSTR pszFileName)
    {
      HDC              hdcMem;
      HDC              hdcScr;
      HBITMAP          hbmMem;
      HBITMAP          hbmOld;  
      HANDLE           hFile;
      BITMAPINFO       bmi;
      BITMAPFILEHEADER bfh;  
      BITMAPINFOHEADER bmih;
      LPBYTE           pPixels;
      DWORD            dwTmp;
      UINT             nScrX = GetSystemMetrics(SM_CXSCREEN);
      UINT             nScrY = GetSystemMetrics(SM_CYSCREEN);  
     
      hdcScr = GetDC(NULL);
      hbmMem = CreateCompatibleBitmap(hdcScr, nScrX, nScrY);
      hdcMem = CreateCompatibleDC(hdcScr);
      hbmOld = (HBITMAP) SelectObject(hdcMem, hbmMem);
     
      if(!StretchBlt(hdcMem, 0, 0, 255, 171, hdcScr, 0, 0, nScrX, nScrY,SRCCOPY)) 
        goto Erreur;   
     
     
      bmih.biSize          = sizeof(BITMAPINFOHEADER);
      bmih.biWidth         = 255; //nScrX;  // 255;
      bmih.biHeight        = 171; //nScrY; //191;
      bmih.biBitCount      = GetDeviceCaps(hdcMem, BITSPIXEL);
      bmih.biCompression   = BI_RGB;
      bmih.biPlanes        = 1;  
      bmih.biSizeImage     = 0;
      bmih.biXPelsPerMeter = 0;
      bmih.biYPelsPerMeter = 0;
      bmih.biClrUsed       = 0;
      bmih.biClrImportant  = 0;
     
      bmi.bmiHeader        = bmih;
     
      if(!(pPixels = (LPBYTE) GlobalAlloc(GMEM_FIXED, bmih.biWidth * bmih.biHeight * (bmih.biBitCount / 8))))
        goto Erreur;                                  
     
      if(!GetDIBits(hdcMem, hbmMem, 0, (WORD) bmih.biHeight, pPixels, &bmi, DIB_RGB_COLORS))
        goto Erreur;                 
     
      bfh.bfType      = 0x4d42;
      bfh.bfReserved1 = 0;
      bfh.bfReserved2 = 0; 
      bfh.bfOffBits   = (DWORD) sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);   
      bfh.bfSize      = (DWORD) sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 
                                bmih.biWidth * bmih.biHeight * (bmih.biBitCount / 8);
     
      hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     
      if(hFile == INVALID_HANDLE_VALUE) 
        goto Erreur;                            
     
      if(!WriteFile(hFile, (LPVOID) &bfh, sizeof(BITMAPFILEHEADER), (LPDWORD) &dwTmp, NULL))
        goto Erreur;
     
      if(!WriteFile(hFile, (LPVOID) &bmih, sizeof(BITMAPINFOHEADER), (LPDWORD) &dwTmp, NULL))
        goto Erreur;
     
      if(!WriteFile(hFile, (LPVOID) pPixels, bmih.biWidth * bmih.biHeight * (bmih.biBitCount / 8), (LPDWORD) &dwTmp, NULL))
        goto Erreur;
     
      GlobalFree(pPixels);  
      CloseHandle(hFile);
      SelectObject(hdcMem, hbmOld);
      ReleaseDC(NULL, hdcScr);
      DeleteDC(hdcMem);
      return TRUE;
     
    Erreur:
      if(pPixels) 
        GlobalFree(pPixels);  
      if(hFile)
      { 
        CloseHandle(hFile);
        DeleteFile(pszFileName);
      }    
      SelectObject(hdcMem, hbmOld);
      ReleaseDC(NULL, hdcScr);
      DeleteDC(hdcMem); 
      return FALSE; 
    }
     
    int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, PSTR lpszArg, int iCmdShow)
    {
      scr2png("screen.png");
      return 0;
    }
    http://msdn.microsoft.com/fr-fr/library/60k1461a.aspx

Discussions similaires

  1. Capture d'écran sous format AVI
    Par Axiome dans le forum Développement Windows
    Réponses: 1
    Dernier message: 02/06/2011, 17h29
  2. Capture d'écran sous mac ?
    Par PauseKawa dans le forum Général Python
    Réponses: 20
    Dernier message: 30/01/2011, 22h46
  3. Capture d'écran sous Visual Studio 2008
    Par buscom dans le forum Visual Studio
    Réponses: 0
    Dernier message: 24/09/2010, 10h31
  4. Capture d'écran sous forme vidéo
    Par ibreak dans le forum C++
    Réponses: 0
    Dernier message: 02/06/2009, 02h03
  5. Raccourcis clavier et capture de sons sous Windows
    Par nek_kro_kvlt dans le forum Langage
    Réponses: 2
    Dernier message: 11/12/2005, 14h15

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