Screenshot via Winsock verschicken
-
binär auslesen:
char cZeichenkette[MAX_PATH];
file=fopen("C:...","rb"); Im Binärlesemodus öffnen
fread(cZeichenkette,sizeof(char),MAX_PATH,file);
...mfg killsmaker
-
geeky schrieb:
send() verschickt Bytes. Warum MS sich für den Buffer gerade nen char*-Pointer ausgedacht hat weiss der Geier

Ähm die bauen doch auf den Berkeley Sockets auf, damit hat sich das nit MS ausgedacht^^ - hm char, glaube ich deswegen, da eben ein char ein Byte verbraucht.
Ich mein, gut man hätte auch void* nehmen können, aber ist eigentlich auch Rille (DWORD, also unsigned long, geht da ja nicht so gut. Wär ja doof, wenn man mal nur 3 Bytes verschicken will
- klingt für mich zum mindestens logisch
).
-
Hi, ich will auch sowas ähnliches machen, aber ohne erst eine Datei anzulegen und diese wider auszulesen, aber ich komm einfach auf keinen grünen Zweig

Also meine Frage, wie müsste ich das vom Prinzip her machen wenn ich das mit winsock verschicken will?
-
gosha16 schrieb:
Also meine Frage, wie müsste ich das vom Prinzip her machen wenn ich das mit winsock verschicken will?

- Screenshot erstellen (-> GDI)
- Speicher anfordern, den ganzen Sermon im RAM ablegen (da Du ja keine Datei anlegen); vergiss nicht den Dateiheader der Bitmap, also BITMAPINFOHEADER*.
- Socket erstellen und Verbindung aufbauen, ggf. einen Client schreiben, das Senden und Empfangen implementieren
- Datenblock schicken
- Warten bis alles angekommen/verschickt ist
- Bitmap anzeigen, bzw. Bitmap-Datei erstellen*; je nach Belieben
So sollte in etwa das Prinzip sein
.EDIT: hm, oder meintest Du was anderes ?
-
Hm. Was issn das für ne Sprache? Hm. Egal.
Die Bitmap kannst du mit GetObject und GetBitmapBits "serialisieren" (also "in einen Byte Block verwandeln" - den du dann eben mit send() verschicken kannst). Wenn du genau das Format einer ".bmp" Datei verwenden willst musst du dir dieses eben ansehen und dich daran halten (das hier zu erklären wäre mir etwas zu langwierig). Ansonsten packe einfach die Daten die du am anderen Ende brauchst hintereinander in einen Puffer, und übergib den dann solange an send() bis alles raus ist.
Und: schicke vorher die Länge der folgenden Daten mit, damit du auf der Empfängerseite dann auch weisst wie gross die sind, also wie lange du die Schleife mit recv() drinnen laufen lassen musst.
-
CodeFinder schrieb:
- Speicher anfordern, den ganzen Sermon im RAM ablegen (da Du ja keine Datei anlegen); vergiss nicht den Dateiheader der Bitmap, also BITMAPINFOHEADER*.
Diese Stelle bereitet mir Schwierigkeiten, aber trotzdem mal ein Gedankenanstos. Ich glaube ich weis jetzt wie ich es machen muss. Danke

-
hustbaer schrieb:
Hm. Was issn das für ne Sprache?
Glaube Visual Basic.
hustbaer schrieb:
Wenn du genau das Format einer ".bmp" Datei verwenden willst musst du dir dieses eben ansehen und dich daran halten
Jupp, glaube da steht auch etwas inner FAQ zu drin; in der MSDN sowieso
.
-
Thorben schrieb in einem anderen Thread:
Der Code ist in FreeBasic geschrieben sollte aber einfach zu erkennen sein was was ist.
-
Nagut, das "Basic" war wenigstens richtig :p .
-
- Speicher anfordern, den ganzen Sermon im RAM ablegen (da Du ja keine Datei anlegen); vergiss nicht den Dateiheader der Bitmap, also BITMAPINFOHEADER*.
Ich will heut auch mal etwas faul sein...

Wie mach ich das am günstigsten?(Funktionsnamen wären mir ganz lieb
)
-
Nochmal: GetObject und GetBitmapBits
Mit deinem Basic Dialekt den du da verwendest kann ich dir nicht helfen.
Sollte der nicht mit byte Arrays umgehen können kannst du über HeapAlloc, GetProcessHeap, CopyMemory etc. arbeiten.
Ist alles in der MSDN dokumentiert, also mach dich mal schlau.