Screenshot – wieso funktioniert das nicht?

Guten Tag,

ich habe die ganzen Codes mal zusammen gebastelt und wollte das nun compilieren.

Aber ich bekomme immer folgende fehler meldung zurück:

Code:
error C2501: 'BitBlt' : Fehlende Speicherklasse oder Typbezeichner

Ich hoffe ihr könnt mir helfen was das heißen soll.

Vielleicht bin ich auch zu doof zum zusammen fügen der ganzen Code Teile hier. Ne Komplete version wäre vielleicht was feines.

Danke schon mal MFG iBot
 
Was für ein Projekt: MFC, Win32, Console? Ist #include <windows.h> vorhanden? Zeige doch evt. mal die zusammengebastelten Codes.

Gruß
MCoder
 
Also ich habe folgendes geplant:
ein script soll alle 5 sekunden ein screenshot machen und diesen auf einen FTP server hochladen.

Dafür brauch ich ein script/datei/anwedung was beim aufrufen ein screenshot erstellt und diese als Datei speichert.

Also denke ich mal das zählt als Consolen Projekt (soll auf Win XP laufen)

MFG iBot
 
Wie MCoder schon sagt:

Hast du <windows.h> includet? Das sollte Schritt 1 sein, wenn du mit GDI zu arbeiten gedenkst. Alles andere sollte sich dann finden.

Wenn du dein Projekt testweise als ZIP irgendwo hochlädst, können wir das auch einfacher ansehen. Wenn der Code nicht allzulang ist (oder ein simples Beispielprojekt), dann am besten mit [ code ] -Tags posten.
 
Wie MCoder schon sagt:

Hast du <windows.h> includet? Das sollte Schritt 1 sein, wenn du mit GDI zu arbeiten gedenkst. Alles andere sollte sich dann finden.

Wenn du dein Projekt testweise als ZIP irgendwo hochlädst, können wir das auch einfacher ansehen. Wenn der Code nicht allzulang ist (oder ein simples Beispielprojekt), dann am besten mit [ code ] -Tags posten.
Ja ich habe Windows.h includet.
Die fehler meldung ist folgende
Code:
(62) : fatal error C1004: Unerwartetes Dateiende gefunden
Also das ist das was ich mal so aus den codes zusammen gebastelt habe auf dieser seite
Code:
#include <windows.h> 
#include <string.h> 
#include <iostream> 

using namespace std; 

class CStellwerk 
{ 
private: 
HWND m_hDesktop; 
public: 

void MakeScreenshot(char SavePath[]); 
void SaveScreen(HWND pScreen, char Path[]) 
{ 
HDC hdcScreen; 
HBITMAP hbmScreen; 
//---------------Bitmap Informationen 
BITMAPINFO infobmp; 
infobmp.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); 
infobmp.bmiHeader.biWidth = 1024; 
infobmp.bmiHeader.biHeight = 768; 
infobmp.bmiHeader.biPlanes = 1; 
infobmp.bmiHeader.biBitCount = 24; 
infobmp.bmiHeader.biCompression = 0; 
infobmp.bmiHeader.biSizeImage = 0; 
infobmp.bmiHeader.biXPelsPerMeter = 0; 
infobmp.bmiHeader.biYPelsPerMeter = 0; 
infobmp.bmiHeader.biClrUsed = 0; 
infobmp.bmiHeader.biClrImportant = 0; 
int* bitmap = new int[1024*768*3]; 
BITMAPFILEHEADER bfheader; 
bfheader.bfType = 19778; 
bfheader.bfSize = sizeof(BITMAPFILEHEADER) + 1024*768*3 + sizeof(BITMAPINFOHEADER); 
bfheader.bfReserved1 = 0; 
bfheader.bfReserved2 = 0; 
bfheader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); 
//Bitmap ----------------------- Informationen 
hdcScreen = GetWindowDC(pScreen); 
hbmScreen = CreateCompatibleBitmap(hdcScreen,1024,768); 
// temporärer DC
HDC hdcTemp = CreateCompatibleDC( hdcScreen );
// Bitmap reinselektieren
HBITMAP hbmOld = (HBITMAP)SelectObject( hdcTemp, hbmScreen );
// Inhalt von Desktop übertragen
BitBlt( hdcTemp, 0, 0, 1024, 768, hdcScreen, 0, 0, SRCCOPY );
int iResult = GetDIBits(hdcTemp,hbmScreen,0,768,bitmap,&infobmp,DIB_RGB_COLORS); 
// aufräumen
SelectObject( hdcTemp, hbmOld );
DeleteObject( hbmScreen );
DeleteDC( hdcTemp );
HANDLE hfile = CreateFile( Path,GENERIC_WRITE,0,0,OPEN_ALWAYS,0,0); 
//Datei Schreiben 
DWORD word; 
WriteFile(hfile,&bfheader,14,&word,NULL); 
WriteFile(hfile,&infobmp,40,&word,NULL); 
WriteFile(hfile,bitmap,1024*768*3,&word,NULL); 
ReleaseDC(pScreen,hdcScreen); 
CloseHandle(hfile); 
delete[] bitmap; 
}
 
Am Ende der Klassendeklaration fehlt die schließende Klammer und das Semikolon:
C++:
class CStellwerk 
{ 

    // ...

}; // fehlt !!
Gruß
MCoder
 
Dann liegts wahrscheinlich an den vorkompilierten Headern. Füge mal in der .cpp-Datei ein als allererstes #include "stdafx.h" ein.

Gruß
MCoder
 
Dann liegts wahrscheinlich an den vorkompilierten Headern. Füge mal in der .cpp-Datei ein als allererstes #include "stdafx.h" ein.

Gruß
MCoder
Jetzt habe ich 5 Fehlermeldungen
Code:
error C2371: 'INT_PTR' : Neudefinition; unterschiedliche Basistypen
basetsd.h(123) : Siehe Deklaration von 'INT_PTR'

error C2371: 'PINT_PTR' : Neudefinition; unterschiedliche Basistypen
basetsd.h(123) : Siehe Deklaration von 'PINT_PTR'

error C2371: 'UINT_PTR' : Neudefinition; unterschiedliche Basistypen
basetsd.h(124) : Siehe Deklaration von 'UINT_PTR'

error C2371: 'PUINT_PTR' : Neudefinition; unterschiedliche Basistypen
basetsd.h(124) : Siehe Deklaration von 'PUINT_PTR'

fatal error C1083: Include-Datei kann nicht geoeffnet werden: 'HtmlHelp.H': No such file or directory
 
Hmm, Alternative zum stdafx.h includen:

Stell mal die Precompiled Headers in den Projekt-Eigenschaften auf "nicht verwenden". Hat man nur Probleme mit.
 

Neue Beiträge

Zurück