Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Bitmap ist immer schwarz - warum?

Frage Entwicklung C und C++

Mitglied: BernddasBrot2

BernddasBrot2 (Level 1) - Jetzt verbinden

03.09.2008 um 13:01 Uhr, 3155 Aufrufe

Hallo alle zusammen,

ich will ein Programm schreiben, das einen Screenshot vom aktuellen Bildschirm macht. Ich habe lange gegoogelt und hab herausgefunden dass ich mir wohl ein Handle vom Desktop holen muss und davon dann den DC.
So weit so gut. Jetzt habe ich noch versucht, ein HBITMAP zu erstellen und diese dann in eine *.bmp-Datei zu schreiben. Aber das Bild das dabei raus kommt ist immer schwarz. Kann mir jemand dabei helfen?
Ich poste mal schnell den Code:

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
HWND desktop;
HDC hdc;
HDC dc;
HBITMAP screen;
HANDLE hFile = CreateFile("D:\\screen.bmp", GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, 0);

desktop = GetDesktopWindow();
printf("Handle erhalten\n");
hdc = GetDC(desktop);
printf("DC erhalten\n");
dc = CreateCompatibleDC(hdc);
printf("memDC erstellt\n");
screen = CreateCompatibleBitmap(dc, 1680, 1050);
printf("HBITMAP erstellt\n");

BITMAPINFO bmpinf;

bmpinf.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpinf.bmiHeader.biWidth = 500;
bmpinf.bmiHeader.biHeight = 500;
bmpinf.bmiHeader.biPlanes = 1;
bmpinf.bmiHeader.biBitCount = 24;
bmpinf.bmiHeader.biCompression = 0;
bmpinf.bmiHeader.biSizeImage = 0;
bmpinf.bmiHeader.biXPelsPerMeter = 0;
bmpinf.bmiHeader.biYPelsPerMeter = 0;
bmpinf.bmiHeader.biClrUsed = 0;
bmpinf.bmiHeader.biClrImportant = 0;

int *bitmap = new int[500 * 500 * 3];

BITMAPFILEHEADER fileheader;

fileheader.bfType = 19778;
fileheader.bfSize = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER) + sizeof(bitmap);
fileheader.bfReserved1 = 0;
fileheader.bfReserved2 = 0;
fileheader.bfOffBits = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER);

GetDIBits(dc, screen, 0, 500, bitmap, &bmpinf, DIB_RGB_COLORS);

DWORD dummy;
WriteFile(hFile, &fileheader, 14, &dummy, NULL);
WriteFile(hFile, &bmpinf, 40, &dummy, NULL);
WriteFile(hFile, bitmap, 750000, &dummy, NULL);

CloseHandle(hFile);

return 0;
}

Danke schon mal im Voraus
Euer Bernd
Ähnliche Inhalte
DSL, VDSL
DSL - Einzelanschluss mit Bitmap-Verschlüsselung (Transportsicherheit vs. Humbug)
gelöst Frage von teflonDSL, VDSL4 Kommentare

Hallo, hat hier jemand eine Ahnung was ein "DSL - Einzelanschluss mit Bitmap-Verschlüsselung" sein soll? ( Quelle dieser Formulierung) ...

Windows XP
Bildschirm schwarz
gelöst Frage von thaeinsWindows XP2 Kommentare

Hi Ich wekle mit Windows XP herum. Ich habe am BS eine Einstellung verändert und nun wird der BS ...

Grafikkarten & Monitore
Schwarze Konturen. OS oder Monitor
gelöst Frage von FalcoKGrafikkarten & Monitore8 Kommentare

Hallo Leute, wir haben in der Firma gerade mit einem komischen Problem zu kämpfen. Undzwar haben wir in der ...

Windows 10
Schwarzer Bildschirm + Mauszeiger
Frage von Ghost108Windows 1016 Kommentare

Hallo alle zusammen, habe einen PC mit Windows 10. Dieser fährt hoch bis zur Anmeldung - dort kann ich ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 4 StundenInternet3 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 11 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 22 StundenWindows 103 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 TagSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless16 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...