Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Screenshot

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 13.06.2007, 17:47    Titel: Screenshot Antworten mit Zitat

Hei leute,
wie kann man nen screenshot in einen screen bekommen?
Danke schon mal

Gruß Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 13.06.2007, 18:40    Titel: Antworten mit Zitat

"ALT" + "Print Screen"
bzw.
"Ctrl" + "Print Screen"
sollte zumindest bei Fensteranwendungen gehen.

Sonst verweisse ich mal auf
wb bzw. fb.de
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 13.06.2007, 18:45    Titel: Antworten mit Zitat

BSAVE...
siehe dazu Michael Freys Links...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 14.06.2007, 14:45    Titel: Antworten mit Zitat

Danke für die Antworten,allerdings habe ich das ungefähr so gemeint:
(Der Code is von Thorben)
Code:

#include "windows.bi"
'---------------------------------------------------------------------------- 
FUNCTION ScreenShot( Src_hWnd AS HWND , Dsn_hWnd AS HWND ) AS INTEGER
'---------------------------------------------------------------------------- 

DIM Src_hDC  AS HDC
  Src_hDC = GetDC( Src_hWnd )
DIM Dsn_hDC AS HDC   
DIM Rect    AS RECT
DIM bmp     AS HBitmap
DIM bi      AS BITMAPINFO

IF Src_hWnd = 0 THEN
 Rect.left   = 0
 Rect.top    = 0
 Rect.right  = GetSystemMetrics( SM_CXSCREEN )
 Rect.bottom = GetSystemMetrics( SM_CYSCREEN )
END IF

GetWindowRect( Src_hWnd , @Rect )
Dsn_hDC = GetDC( Dsn_hWnd )

DIM bmih AS BITMAPINFOHEADER 

bmih.biSize=LEN( BITMAPINFOHEADER )
bmih.biHeight= 480
bmih.biWidth= 640
bmih.biPlanes=1
bmih.biBitCount=24
bmih.biCompression=BI_RGB
bmih.biSizeImage = ( bmih.biWidth * bmih.biBitCount ) * bmih.biHeight + 31
bmih.biXPelsPerMeter = 0
bmih.biYPelsPerMeter = 0
bmih.biClrImportant = 0
bi.bmiHeader = bmih

bmp = CreateDIBSection( Src_hDC , @bi , DIB_RGB_COLORS , NULL , NULL , NULL )

SelectObject( Dsn_hDC , bmp )
StretchBlt( Dsn_hDC , 0 , 0 , 640 , 480 , Src_hDC , 0 , 0 , Rect.right , Rect.bottom , SRCCOPY )

END FUNCTION
ScreenShot(0,0)
sleep

nur halt das Bild kommt bei mir nicht im Screen
gibts dafür ne Lösung?

Gruß Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Build0815



Anmeldungsdatum: 30.09.2006
Beiträge: 51

BeitragVerfasst am: 14.06.2007, 17:37    Titel: Antworten mit Zitat

Also bei mir sieht das ganze so aus:

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 15.06.2007, 12:07    Titel: Antworten mit Zitat

Der Code arbeitet mit der WinAPI. d.h. Du musst ein Fenster mit der WinApi erstellen und den Fenster Handle an die Function übergeben.

Code:

ScreenShot( HandleToScreenShotWindow , 0 )


MFG Thorben[/quote]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

BeitragVerfasst am: 15.06.2007, 14:23    Titel: Antworten mit Zitat

Michael Frey hat Folgendes geschrieben:
"ALT" + "Print Screen"
bzw.
"Ctrl" + "Print Screen"
sollte zumindest bei Fensteranwendungen gehen.


Um den ganzen Bildschirm in die zwischenablage zu kopieren: einfach nur "Print Screen" bzw. "Druck" drücken, dann auf paint gehen und einfügen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 15.06.2007, 14:35    Titel: Antworten mit Zitat

King-01 hat Folgendes geschrieben:
Um den ganzen Bildschirm in die zwischenablage zu kopieren...


Caran hat Folgendes geschrieben:
Hei leute,
wie kann man nen screenshot in einen screen bekommen?


mit den Augen rollen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 15.06.2007, 15:18    Titel: Antworten mit Zitat

Zitat:

Der Code arbeitet mit der WinAPI. d.h. Du musst ein Fenster mit der WinApi erstellen und den Fenster Handle an die Function übergeben.

Sorry wenn ich jetz bisschen blöd frage; aber wie meinst' denn das?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 15.06.2007, 16:28    Titel: Antworten mit Zitat

So ich hab meinen kompleten Screenshot Code einfach mal bei NoPaste hochgeladen. Da kannst du dir den Code ja mal angucken.

http://www.freebasic.de/fbnp/index.php?view=682

MFG Thorben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 15.06.2007, 16:53    Titel: Antworten mit Zitat

Aber zack zack ====>>> Freebasic-portal.de durchgeknallt durchgeknallt durchgeknallt
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 15.06.2007, 17:25    Titel: Antworten mit Zitat

du brauchst anderen usern nix zu befehlen... peinlich
wo sie hingehen, ist ihre sache... und unser nopaste... gibt's einfach nocht net durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 15.06.2007, 19:35    Titel: Antworten mit Zitat

Hey Leute,
meine wohl letzte Frage zu diesem Thema wäre ob man dieses Bild noch irgendwie in eine bmp Datei speichern kann.

MfG Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 16.06.2007, 17:58    Titel: Antworten mit Zitat

Keiner ne Ahnung?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 16.06.2007, 18:16    Titel: Antworten mit Zitat

mit get den screen einlesen + in eine datei kopieren.... mit den Augen rollen
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Digga



Anmeldungsdatum: 07.01.2006
Beiträge: 48

BeitragVerfasst am: 16.06.2007, 19:11    Titel: Antworten mit Zitat

Weiss zwar nicht mehr wo ich den Code her habe, aber ich denke mal das er sich z.T. von selbst erklärt

Code:

ScreenShot:

   ScrFile$ = "C:\test.BMP"

 
   ScrTest% = POINT(1279, 1023)
   PSET (1279, 1023), 15
   IF POINT(1279, 1023) <> 15 THEN
      PRINT "Bildschirmmodus falsch": END
   ELSE
      PSET (1279, 1023), ScrTest%
   END IF


   DIM ScrShotPAL(15, 2)

   FOR ScrI% = 0 TO 15
      OUT &H3C7, ScrI%
      ScrShotPAL(ScrI%, 2) = CINT(INP(&H3C9) * 4.04)
      ScrShotPAL(ScrI%, 1) = CINT(INP(&H3C9) * 4.04)
      ScrShotPAL(ScrI%, 0) = CINT(INP(&H3C9) * 4.04)
   NEXT


  ScrHead$ = ""
   ScrHead$ = ScrHead$ + "424D76000A0000000000760000002800"
   ScrHead$ = ScrHead$ + "00000005000000040000010004000000"
   ScrHead$ = ScrHead$ + "000000000A0000000000000000000000"
   ScrHead$ = ScrHead$ + "000000000000"

   SCRN% = FREEFILE
   OPEN ScrFile$ FOR OUTPUT AS #SCRN%
     
      FOR ScrI% = 1 TO LEN(ScrHead$) STEP 2
         PRINT #SCRN%, CHR$(VAL("&H" + MID$(ScrHead$, ScrI%, 2)));
      NEXT

      FOR ScrI% = 0 TO 15
         PRINT #SCRN%, CHR$(ScrShotPAL(ScrI%, 0));
         PRINT #SCRN%, CHR$(ScrShotPAL(ScrI%, 1));
         PRINT #SCRN%, CHR$(ScrShotPAL(ScrI%, 2));
         PRINT #SCRN%, CHR$(0);
      NEXT

 
   ScrY% = 1023
   DO WHILE ScrY% > -1

      ScrX% = 0: ScrLine$ = ""
      DO WHILE ScrX% < 1280

         ScrLeft% = POINT(ScrX%, ScrY%)
         ScrRight% = POINT(ScrX% + 1, ScrY%)
         ScrLine$ = ScrLine$ + CHR$(VAL("&H" + HEX$(ScrLeft%) + HEX$(ScrRight%)))
       
      ScrX% = ScrX% + 2
      LOOP

      PRINT #SCRN%, ScrLine$;

   ScrY% = ScrY% - 1
   LOOP


   CLOSE SCRN%


#include "windows.bi"
#include "win\commdlg.bi"
Option Explicit

'*************************************************************************

Function FileLength( filename As String )

    Dim As Integer handle, length

    handle = Freefile
    Open filename For Input As #handle
    length = Lof( handle )
    Close #handle
    Return length

End Function

Function GetFile( filename As String, buffer As Byte Ptr )

    Dim As Integer handle, length, res

    length = FileLength( filename )
    buffer = allocate( length )
    handle = Freefile
    Open filename For Binary As #handle
    res = Get( #handle, , *buffer, length )
    Close #handle
    Return res

End Function

Function PrintBMP( filename As String )

    Dim As LPBITMAPFILEHEADER lpbmfh
    Dim As LPBITMAPINFO lpbmi
    Dim As Byte Ptr buffer
    Dim As HANDLE hDesktopDC

    Dim As PRINTDLG pd
    Dim As DOCINFO di

    Dim As Single fLogPelsX1, fLogPelsX2, fLogPelsY1, fLogPelsY2
    Dim As Single fScaleX, fScaleY

    '' GetFile will allocate a buffer of the required size, assign
    '' the address of the buffer to <buffer>, copy the file data to
    '' the buffer, and return whatever GET # returned, either 0 or
    '' an error code.
    ''
    If GetFile( filename, buffer ) Then
        Print "Error getting file"
        Sleep
        deallocate( buffer )
        Return
    Endif

    '' Set up the necessary buffer pointers. A BMP file starts with
    '' a 14-byte BITMAPFILEHEADER structure, followed immediately by
    '' a BITMAPINFO (or BITMAPCOREINFO) structure.
    ''
    lpbmfh = cast( LPBITMAPFILEHEADER, buffer )
    lpbmi = cast( LPBITMAPINFO, buffer + 14 )

    '' Initialize the PRINTDLG and DOCINFO structures.
    ''
    pd.lStructSize = sizeof( PRINTDLG )
    pd.Flags = PD_RETURNDC Or PD_USEDEVMODECOPIES
    pd.nCopies = 1

    di.cbSize = sizeof( DOCINFO )
    di.lpszDocName = Strptr( "Print BMP Test" )

    '' Get a printer device context, or return an error.
    ''
    If PrintDlg( @pd ) = 0 Then
        If CommDlgExtendedError() Then
            Print "Print Dialog returned error"
            Sleep
            deallocate( buffer )
            Return
        Else
            Print "Print Dialog was canceled or closed"
            Sleep
            deallocate( buffer )
            Return
        Endif
    Else
        If GetDeviceCaps( pd.hDC, RASTERCAPS ) And RC_STRETCHDIB = 0 Then
            Print "Printer does not support StretchDIBits"
            Sleep
            DeleteDC( pd.hDC )
            deallocate( buffer )
            Return
        Endif
    Endif

    #ifdef USE_ACTUAL_SIZE

    '' Get the pixels-per-logical-inch in the horizontal
    '' and vertical directions for the bitmap.
    ''
    fLogPelsX1 = lpbmi->bmiHeader->biXPelsPerMeter * .0254
    fLogPelsY1 = lpbmi->bmiHeader->biYPelsPerMeter * .0254

    #else

    '' Get the pixels-per-logical-inch in the horizontal
    '' and vertical directions for the current display.
    ''
    hDesktopDC = GetDC( 0 )
    fLogPelsX1 = GetDeviceCaps( hDesktopDC, LOGPIXELSX )
    fLogPelsY1 = GetDeviceCaps( hDesktopDC, LOGPIXELSY )
    ReleaseDC( 0, hDesktopDC )

    #endif

    Print fLogPelsX1, fLogPelsY1

    '' Get the pixels-per-logical-inch in the horizontal
    '' and vertical directions for the selected printer.
    ''
    fLogPelsX2 = cast( Single, GetDeviceCaps( pd.hDC, LOGPIXELSX ) )
    fLogPelsY2 = cast( Single, GetDeviceCaps( pd.hDC, LOGPIXELSY ) )

    Print fLogPelsX2, fLogPelsY2

    '' Calc the scaling factors required to maintain the original
    '' proportions when the bitmap is printed.
    ''
    If fLogPelsX1 > fLogPelsX2 Then
        fScaleX = fLogPelsX1 / fLogPelsX2
    Else
        fScaleX = fLogPelsX2 / fLogPelsX1
    Endif
    If fLogPelsY1 > fLogPelsY2 Then
        fScaleY = fLogPelsY1 / fLogPelsY2
    Else
        fScaleY = fLogPelsY2 / fLogPelsY1
    Endif

    Print fScaleX, fScaleY

    '' Start a print job.
    ''
    If StartDoc( pd.hDC, @di ) = SP_ERROR Then
        Print "StartDoc returned error"
        Sleep
        DeleteDC( pd.hDC )
        deallocate( buffer )
        Return
    Endif

    '' Prepare the printer driver to accept data.
    ''
    If StartPage( pd.hDC ) <= 0 Then
        Print "StartPage returned error"
        Sleep
        EndDoc( pd.hDC )
        DeleteDC( pd.hDC )
        deallocate( buffer )
        Return
    Endif

    '' Use StretchDIBits to copy the bitmap to the printer device
    '' context, stretching or compressing as necessary to maintain
    '' its original proportions.
    ''
    '' declare function StretchDIBits( hdc byval as HDC,
    ''                                 destX byval as integer,
    ''                                 destY byval as integer,
    ''                                 destWidth byval as integer,
    ''                                 destHeight byval as integer,
    ''                                 srcX byval as integer,
    ''                                 srcY byval as integer,
    ''                                 srcWidth byval as integer,
    ''                                 srcHeight byval as integer,
    ''                                 lpbits byval as any ptr,
    ''                                 lpbmi byval as BITMAPINFO ptr,
    ''                                 options byval as UINT,
    ''                                 rasterop byval as DWORD )
    ''                                 as integer
    ''
    If StretchDIBits( pd.hDC, _
                      0, _
                      0, _
                      Cint( lpbmi->bmiHeader.biWidth * fScaleX ), _
                      Cint( lpbmi->bmiHeader.biHeight * fScaleY ), _
                      0, _
                      0, _
                      lpbmi->bmiHeader.biWidth, _
                      lpbmi->bmiHeader.biHeight, _
                      buffer + lpbmfh->bfOffBits, _
                      cast( LPBITMAPINFO, buffer + 14 ), _
                      DIB_RGB_COLORS, _
                      SRCCOPY ) = GDI_ERROR Then

        Print "StretchDIBits returned error"
        Sleep
        EndPage( pd.hDC )
        EndDoc( pd.hDC )
        DeleteDC( pd.hDC )
        deallocate( buffer )
        Return
    Endif

    '' Notify the printer driver that the page is complete.
    ''
    If EndPage( pd.hDC ) <= 0 Then
        Print "EndPage returned error"
        Sleep
        EndDoc( pd.hDC )
        DeleteDC( pd.hDC )
        deallocate( buffer )
        Return
    Endif

    '' End the print job.
    ''
    If EndDoc( pd.hDC ) <= 0 Then
        Print "EndDoc returned error"
        Sleep
        DeleteDC( pd.hDC )
        deallocate( buffer )
        Return
    Endif

    DeleteDC( pd.hDC )
    deallocate( buffer )

    Return 1

End Function

Print PrintBMP( "test.bmp" )

Sleep

'' type BITMAPFILEHEADER field=2
''         bfType as WORD
''         bfSize as DWORD
''         bfReserved1 as WORD
''         bfReserved2 as WORD
''         bfOffBits as DWORD
'' end type
''
'' type BITMAPINFO
''         bmiHeader as BITMAPINFOHEADER
''         bmiColors(0 to 1-1) as RGBQUAD
'' end type
''
'' type BITMAPINFOHEADER
''         biSize as DWORD
''         biWidth as LONG
''         biHeight as LONG
''         biPlanes as WORD
''         biBitCount as WORD
''         biCompression as DWORD
''         biSizeImage as DWORD
''         biXPelsPerMeter as LONG
''         biYPelsPerMeter as LONG
''         biClrUsed as DWORD
''         biClrImportant as DWORD
'' end type
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 17.06.2007, 13:45    Titel: Antworten mit Zitat

Allo Leude,
Tanke für diese hilfreichen Antworten. Hat mir sehr geholfen.

MfG Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
surfer87



Anmeldungsdatum: 16.09.2004
Beiträge: 103

BeitragVerfasst am: 28.08.2007, 11:44    Titel: Screenshot (Druck-Taste simulieren?) Antworten mit Zitat

Hi, ist es mit FB möglich einen kompletten Screenshot vom gesamten Bildschirm zu erstellen und diesen dann in das FB Prog zu laden?
Sodass sozusagen die Druck-Taste simuliert wird?

Danke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
King-01
gesperrt


Anmeldungsdatum: 26.02.2007
Beiträge: 351

BeitragVerfasst am: 28.08.2007, 11:53    Titel: Antworten mit Zitat

Das wurde soweit ich weiß in diesem Thread besprochen, oder?
_________________
[quote="IRC"](22:41:56)<PMedia>Jojo, hats nen Grund warum wir chatten obwohl du grad neben mir sitzt?
...
(23:00:59)<PMedia>USB war erst als Waffe geplant[/quote]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz