Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Win32] Un programme en C

Il fait des captures d'écran

    7 janvier 2006 à 20:13:58

    [rz0] Taggez vos sujets... Si c'est du Win32, mettez Win32.

    Bonjour à tous, :)
    J'ai crée un petit programme qui fait des captures d'écran.
    C'est pas super génial, mais bon je débute. :D
    L'éxécutable:
    <lien url="http://dl-3.free.fr/52616e646f6d495686b8e3420782c53b89b1e0a9818718f8339745cc7489d68b/photo.exe"></lien>

    Pour l'utiliser, il faut double-cliquer, puis suivre les instructions à l'écran.
    Quand il vous demandera ou en registrer le fichier, mettez une extention en .bmp
    Ensuite appuyer sur P
    Vous pouvez réduire le programme pour éviter qu'il se voit sur l'image.

    Et le code C:
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    #include <sys/types.h>
    #include <win.h>

    #define MAXx 1024
    #define MAXy 768

    int i,j,z,ecran[MAXx][MAXy],premierefois,nimage,resultat,a,n,fenecran;


    HDC p;
    OPENFILENAME ofn;
    char szFile [200];



    FILE *f;
    char c[400];
    char e[200];

    void screen(int x,int y)
    {
            ecran[x][y] = GetPixel(p,x,y);
    }

    int keypressed (char c)
    {
            int par;

            par=c;
            return((GetKeyState(par)&0x8000)!=0);
    }


    void getfilename(int w, char *z)
    {

            szFile[0] = '\0';
            ofn.hwndOwner = NULL;
            ofn.nMaxFile = sizeof(szFile)/ sizeof(*szFile);
            ofn.lpstrFile= &szFile[0];
            ofn.Flags = OFN_SHOWHELP | OFN_OVERWRITEPROMPT;
            ofn.lpstrInitialDir = (LPSTR)NULL;
            ofn.lStructSize = sizeof(OPENFILENAME);
            resultat=GetSaveFileNameW(&ofn);
            //printf("resultat=%d\n",resultat);
            for (i=0;/*(ofn.lpstrFile[i*2]!=0)||(ofn.lpstrFile[i*2+1]!=0)*/i<200;i++) z[i] = ofn.lpstrFile[i*2];

    }


    void saveimage(int sizex, int sizey,char *e)
    {
    FILE *f;
    int i,x,y;
    unsigned short k;
    char c;


        remove(e);

            f = fopen(e,"wb");


            /*size_t fwrite(const void * restrict ptr,size_t size, size_t nmemb,FILE * restrict stream);*/
            c='B'; fwrite(&c,1,1,f);
            c='M'; fwrite(&c,1,1,f);

            i=54+ sizex * sizey * 3 + sizey * (sizex % 4); fwrite(&i,4,1,f);
            i=0;fwrite(&i,4,1,f);
            i=54; fwrite(&i,4,1,f);
        i=0x28;fwrite(&i,4,1,f);
            fwrite(&sizex,4,1,f);
            fwrite(&sizey,4,1,f);
            k=1;fwrite(&k,2,1,f);
            k=24; fwrite(&k,2,1,f);
            i=0; fwrite(&i,4,1,f);
            i=0; fwrite(&i,4,1,f);
            i=3413;fwrite(&i,4,1,f);
            fwrite(&i,4,1,f);
            i=0; fwrite(&i,4,1,f);
            i=0; fwrite(&i,4,1,f);


            for (y=sizey-1;y>=0;y--)
                    {
                            for (x=0;x<sizex;x++)
                            {
                            c=((ecran[x][y])>>16)&0xff; fwrite(&c,1,1,f);
                    c=((ecran[x][y])>>8)&0xff; fwrite(&c,1,1,f);
                            c=ecran[x][y]&0xff; fwrite(&c,1,1,f);
                        }
                     c=0;
                     for (x=0;x< (sizex % 4); x++) fwrite(&c,1,1,f);
            }
            fclose(f);
    }


    int main()
    {



       while(1)

    {


    printf("Taper A pour choisir le dossier de sauvegarde\n");
            while (!(keypressed('A')))
        sleep(1);

         if (keypressed ('A'))

            while (keypressed('A'))
            sleep(1);

            getfilename(1,e);

    printf("Appuyez sur p pour prendre une photo(ca prend environ 5 secondes)\n");

            while (!(keypressed('P')))
        sleep(1);

         if (keypressed ('P'))

            while (keypressed('P'))
            sleep(1);

    p=GetDC(NULL);

      for(j=0;j<MAXy;j++)
            for(i=0;i<MAXx;i++)
                    screen(i,j);
            printf("ca fonctionne :)\n");

    ReleaseDC(NULL,p);

    saveimage(MAXx,MAXy,e);
    printf("Vous avez enregistrer l'image\n\n");

       ReleaseDC(NULL,p);

    }


        return(0);

    }
    • Partager sur Facebook
    • Partager sur Twitter
      24 février 2006 à 5:59:14

      Le lien ne fonctionne pas et le code génère des dizaines d'erreurs à la compilation :(
      • Partager sur Facebook
      • Partager sur Twitter
        24 février 2006 à 16:41:19

        C'est tout a fait normal que ca ne fonctionne pas parce que les fichiers son supprimé au bout de 24h :)
        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2006 à 5:30:03

          Je sais je l'avais lu, mais pour ce qui est de la compilation qui fait plein d'erreurs? :p
          • Partager sur Facebook
          • Partager sur Twitter

          [Win32] Un programme en C

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown