Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 23.05.2007, 22:09 Titel: Screenshot via Winsock verschicken |
|
|
Moin,
ich hab ein kleines Prog geschrieben, welches einen Screenshot macht.
Code: |
'----------------------------------------------------------------------------
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 |
Diesen möchte ich jetzt gerne über mein Netzwerk verschiken. Dazu benutze ich die "Winsock" lib. Mein Problem, da ich ja nur Zeichenketten verschicken kann,
muss der Screenshot iregndwie in eine Zeichenkette. Nur wie mach ich das?
Ich hab erfahren das das irgendwie mit der Function "GetBitmapBits" zu tun hat. Aber wie genau das funktioniert weiß ich nicht. Kann mir von euch jemand weiter helfen?
MFG Thorben |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 23.05.2007, 22:27 Titel: |
|
|
du könntest dir ne' berechnungsroutine schreiben, die dir einen integer der bildgröße in bytes (!) zurückgibt. dann dimst du einen string mit dieser länge und weist diesem per pointer das BMP-file zu.
kann dir jetzt keine src. geben, habe mich damit nochnie bschäftigt. _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 24.05.2007, 08:31 Titel: Thorben |
|
|
Meinst du mit berechnungs rutiene das hier?
Breit * Höhe * anzahlBitproPixel(24) + LEN( BITMAPINFOHEADER )
MFG Thorben |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 27.05.2007, 19:53 Titel: |
|
|
Code: | '----------------------------------------------------------------------------
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.biHeight * bmih.biBitCount + bmih.biSize
bmih.biXPelsPerMeter = 0
bmih.biYPelsPerMeter = 0
bmih.biClrImportant = 0
bi.bmiHeader = bmih
bmp = CreateDIBSection( Src_hDC , @bi , DIB_RGB_COLORS , NULL , NULL , NULL )
DIM str_t AS ZSTRING * 7372840 'bmih.biSizeImage
GetBitmapBits( bmp , bmih.biSizeImage , @str_t )
END FUNCTION |
Ist das so richtig? So stürzt das Prog bei mir ab( ohne irgendein Fehler anzuzeigen ).
MFG Thorben |
|
Nach oben |
|
 |
Thorben
Anmeldungsdatum: 26.04.2005 Beiträge: 173 Wohnort: SH
|
Verfasst am: 19.09.2007, 20:47 Titel: |
|
|
Ich muss leider nochmal nachhaken...
Kann mir einer erklären wie ich die "GetBitmapBits" Funktion bei meinem beispiel einstezen kann? Ich werd nemlich aus msdn nicht schlau.
Wie bekomm ich die Daten in einen String oder in ein BYTE ARRAY?
MFG Thorben |
|
Nach oben |
|
 |
|