Screenshot - Version 1



  • Hallo,
    kann mir jamnd sagen ob's ne Möglichkeit gibt, (ohne eine Message für die Taste "DRUCK" zu generieren) einen Screenshot zu machen bzw. den Inhalt des Bildschirms in eine Imagekomponente zu bringen?

    Gruß, Matthias

    [ Dieser Beitrag wurde am 02.06.2002 um 14:58 Uhr von Jansen editiert. ]



  • Hab folgenden Code mal mit der Suchfunktion gefunden. (oder wars via groups.google.com? naja egal)
    Folgende Anforderungen: Eine Image-Componente Auf dem Formular drauf.

    HDC HScreenDC = GetDC(0); 
        Image1->Picture->Bitmap->Handle = CreateCompatibleBitmap(HScreenDC,
                                                Form1->Width,
                                                Form1->Height);
    
        int result = GetDeviceCaps(HScreenDC, RASTERCAPS); 
        if (result & RC_PALETTE) 
        { 
            int palette_size = GetDeviceCaps(HScreenDC, SIZEPALETTE); 
            if (palette_size == 256) 
            { 
                const size_t size = sizeof(LOGPALETTE) + 255 * sizeof(PALETTEENTRY); 
                unsigned char* pBuffer = new unsigned char[size]; 
    
                LPLOGPALETTE lplogpal = 
                    reinterpret_cast<LPLOGPALETTE>(pBuffer); 
                lplogpal->palVersion = 0x300; 
                lplogpal->palNumEntries = 256; 
                GetSystemPaletteEntries(HScreenDC, 0, 256, 
                                        lplogpal->palPalEntry); 
    
                Image1->Picture->Bitmap->Palette = CreatePalette(lplogpal);
                delete [] pBuffer; 
            } 
        } 
        ReleaseDC(0, HScreenDC); 
    
        HDC HWindowDC = GetWindowDC(Form1->Handle);
        BitBlt(Image1->Picture->Bitmap->Canvas->Handle, 0, 0,
               Image1->Picture->Bitmap->Width, Image1->Picture->Bitmap->Height,
               HWindowDC, 0, 0, 
               SRCCOPY); 
        ReleaseDC(Form1->Handle, HWindowDC);
    

    Hope that helps

    -junix


Anmelden zum Antworten