screenshot -> welche dll?
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
abgespeichert
betriebssystem
buffer
byte
einzelnen fenstern
fragen
funktion
gesamten bildschirm
hierbei
hinweis
information
null
parameter
programmiersprache
signal
signatur
tasten
thw
window
zwischenablage
-
hi.
ich will einen screenshot machen.
aber ich wei? nicht, welche dll und welche funktion.
ich will von den einzelnen fenstern und einmal von dem gesamten bildschirm.
welche funktionen brauche ich da?
und in welcher dll ist die?
mit allem zufrieden.
(dll name + funktion + parameter...)
w?re nett... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Vielleicht hilft dir einer der folgenden Links (Google!):
http://www.scalabium.com/faq/dct0001.htm
http://www.swissdelphicenter.ch/de/showcode.php?id=1708
-
Gar keine bestimmte DLL, oder sonst was!
Schau dir mal die Beispiele an:
Man holt sich den Handle auf den Desktop, und ?ber diesen Handle kopiert man das Bitmap des Desktops in ein eigenes. Und dann speichert man's ab! -
Oder man dr?ckt einfach die "Print"-Taste, dann bekommt man allerdings einen echten Screenshot (Tastendruck kann per Signal simuliert werden). Der Screenshot befindet sich dann in der Zwischenablage.
Lies' dir mal die von burgi genannten Seiten durch.
F?r ein Codebeispiel oder so sind deine Informationen einfach zu sp?rlich. Du hast nichtmal 'ne Programmiersprache angegeben, geschweige denn das gew?nschte Betriebssystem. Nur die Frage nach 'ner DLL ist ein Hinweis auf Windows.
MfG.
thw -
thw schrieb:
Oder man dr?ckt einfach die 'Print'-Taste, dann bekommt man allerdings einen echten Screenshot (Tastendruck kann per Signal simuliert werden). Der Screenshot befindet sich dann in der Zwischenablage.
Lies' dir mal die von burgi genannten Seiten durch.
F?r ein Codebeispiel oder so sind deine Informationen einfach zu sp?rlich. Du hast nichtmal 'ne Programmiersprache angegeben, geschweige denn das gew?nschte Betriebssystem. Nur die Frage nach 'ner DLL ist ein Hinweis auf Windows.
MfG.
thw
Ich denke, er meint Assembler->Signatur -
Wenn dir so was echt in ASM vorgenommen hast dann viel Spa? ich weis ja nich wie fit da bist :D
Aber da es sich ja hierbei praktisch um jede Sprache handeln kann hab ich mal was in C++ gecodet. Es wird ein Screenshot geschossen und als Bitmap abgespeichert.
. void Screen2BMP(char *lpszFileName) { BITMAPINFO bmi; BITMAPFILEHEADER bmh; HANDLE hFile; HWND hWnd; HDC dcWin, dcBmp, dcOld; HBITMAP hBmp; BYTE *buffer = NULL; int iWidth, iHeight; const unsigned int BISIZE = sizeof(BITMAPINFO); const unsigned int BHSIZE = sizeof(BITMAPFILEHEADER); DWORD dwPixel, dwPlanes; DWORD dwSize, dwSizeW; memset(&bmi,NULL,BISIZE); memset(&bmh,NULL,BHSIZE); hWnd = ::GetDesktopWindow(); if(hWnd) { dcWin = ::GetDC(hWnd); iWidth = GetDeviceCaps(dcWin, HORZRES); iHeight = GetDeviceCaps(dcWin, VERTRES); dwPlanes = GetDeviceCaps(dcWin, PLANES); dwPixel = 16; dcBmp = CreateCompatibleDC(dcWin); hBmp = CreateCompatibleBitmap(dcWin, iWidth, iHeight); dcOld = (HDC)SelectObject(dcBmp, hBmp); BitBlt(dcBmp, 0, 0, iWidth, iHeight, dcWin, 0, 0, SRCCOPY); bmh.bfSize = BHSIZE; bmh.bfType = 0x4D42; bmh.bfOffBits = BHSIZE + sizeof(BITMAPINFOHEADER); bmi.bmiHeader.biSize = BISIZE; bmi.bmiHeader.biWidth = iWidth; bmi.bmiHeader.biHeight = iHeight; bmi.bmiHeader.biPlanes = (BYTE)dwPlanes; bmi.bmiHeader.biBitCount = (BYTE)dwPixel; bmi.bmiHeader.biCompression = BI_RGB; dwSize = bmi.bmiHeader.biSizeImage = dwPixel * iWidth * iHeight / 8; buffer = new BYTE[dwSize]; if(GetDIBits(dcBmp, hBmp, 0, iHeight, buffer, &bmi, DIB_RGB_COLORS)) { hFile = CreateFile(lpszFileName, GENERIC_READ | GENERIC_WRITE, (DWORD)0, (LPSECURITY_ATTRIBUTES)NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, (HANDLE)NULL); if(hFile != INVALID_HANDLE_VALUE) { WriteFile(hFile, &bmh, BHSIZE, &dwSizeW, NULL); WriteFile(hFile, &bmi, BISIZE, &dwSizeW, NULL); WriteFile(hFile, buffer, dwSize, &dwSizeW, NULL); } } SelectObject(dcBmp, dcOld); DeleteDC(dcBmp); ::ReleaseDC(hWnd, dcWin); DeleteObject(hBmp); CloseHandle(hFile); delete [] buffer; } } .
Beitrag ge?ndert am 18.06.2006 01:04 von funkdoobiest -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage