kostenloser Webspace werbefrei: lima-city


screenshot -> welche dll?

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    chaoscode

    chaoscode hat kostenlosen Webspace.

    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...
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Vielleicht hilft dir einer der folgenden Links (Google!):
    http://www.scalabium.com/faq/dct0001.htm
    http://www.swissdelphicenter.ch/de/showcode.php?id=1708
  4. Autor dieses Themas

    chaoscode

    chaoscode hat kostenlosen Webspace.

    und welche funktionen?
    und welche dll?
    bei google hab ich auch schon geschaut....
  5. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    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!
  6. 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
  7. benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.



    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 :wink:
  8. 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
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!