 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 13.06.2007, 17:47 Titel: Screenshot |
|
|
Hei leute,
wie kann man nen screenshot in einen screen bekommen?
Danke schon mal
Gruß Caran |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.06.2007, 18:45 Titel: |
|
|
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 |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 14.06.2007, 14:45 Titel: |
|
|
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 |
|
 |
Build0815

Anmeldungsdatum: 30.09.2006 Beiträge: 51
|
Verfasst am: 14.06.2007, 17:37 Titel: |
|
|
Also bei mir sieht das ganze so aus:
 |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 15.06.2007, 12:07 Titel: |
|
|
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 |
|
 |
King-01 gesperrt

Anmeldungsdatum: 26.02.2007 Beiträge: 351
|
Verfasst am: 15.06.2007, 14:23 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 15.06.2007, 14:35 Titel: |
|
|
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? |
 _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 15.06.2007, 15:18 Titel: |
|
|
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 |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 15.06.2007, 17:25 Titel: |
|
|
du brauchst anderen usern nix zu befehlen...
wo sie hingehen, ist ihre sache... und unser nopaste... gibt's einfach nocht net  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 15.06.2007, 19:35 Titel: |
|
|
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 |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 16.06.2007, 17:58 Titel: |
|
|
Keiner ne Ahnung? |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Digga

Anmeldungsdatum: 07.01.2006 Beiträge: 48
|
Verfasst am: 16.06.2007, 19:11 Titel: |
|
|
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 |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 17.06.2007, 13:45 Titel: |
|
|
Allo Leude,
Tanke für diese hilfreichen Antworten. Hat mir sehr geholfen.
MfG Caran |
|
Nach oben |
|
 |
surfer87
Anmeldungsdatum: 16.09.2004 Beiträge: 103
|
Verfasst am: 28.08.2007, 11:44 Titel: Screenshot (Druck-Taste simulieren?) |
|
|
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 |
|
 |
King-01 gesperrt

Anmeldungsdatum: 26.02.2007 Beiträge: 351
|
Verfasst am: 28.08.2007, 11:53 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|