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 via Winsock verschicken

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



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 23.05.2007, 22:09    Titel: Screenshot via Winsock verschicken Antworten mit Zitat

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
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: 23.05.2007, 22:27    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 24.05.2007, 08:31    Titel: Thorben Antworten mit Zitat

Meinst du mit berechnungs rutiene das hier?

Breit * Höhe * anzahlBitproPixel(24) + LEN( BITMAPINFOHEADER )

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: 24.05.2007, 16:12    Titel: Antworten mit Zitat

ja so in der Art happy
_________________
If hilfreicher_Beitrag then klick(location.here)

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



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 27.05.2007, 19:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Thorben



Anmeldungsdatum: 26.04.2005
Beiträge: 173
Wohnort: SH

BeitragVerfasst am: 19.09.2007, 20:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen 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