• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 2, 文章 - 2, 評論 - 0, 引用 - 0
            數據加載中……

            自動截屏到文件的小程序

            (一)功能
            實現了一個定時截取當前屏幕圖像的小程序。

            (二)準備工作
            1)建立VC CONSOLE APPLICATION,選擇MFC SUPPORT
            2)在STDAFX.H文件中加入頭文件:conio.h

            (三)主程序
            主程序代碼如下:
                    char Filename[100];
                    int count = 0;

                    while(!_kbhit())//用戶按鍵則退出
                    {
                        Sleep(5000);//掛起5秒

                        count ++;
                       
                        sprintf(Filename, "%d.bmp", count);

                        Screen(Filename);//調用Screen函數
                    }
            以上代碼每隔5秒鐘調用一次函數Screen,將當前屏幕保存到文件中。

            (四)工作函數Screen
            Screen實現了當前屏幕內容到bmp文件的拷貝。
            源代碼如下:
            void Screen(char filename[])
            {
                CDC *pDC;//屏幕DC
                pDC = CDC::FromHandle(GetDC(NULL));//獲取當前整個屏幕DC
                int BitPerPixel = pDC->GetDeviceCaps(BITSPIXEL);//獲得顏色模式
                int Width = pDC->GetDeviceCaps(HORZRES);
                int Height = pDC->GetDeviceCaps(VERTRES);

                cout << "當前屏幕色彩模式為" << BitPerPixel << "位色彩" << endl
                     << "屏幕寬度:" << Width << endl
                     << "屏幕高度:" << Height << endl << endl;
               
                CDC memDC;//內存DC
                memDC.CreateCompatibleDC(pDC);
               
                CBitmap memBitmap, *oldmemBitmap;//建立和屏幕兼容的bitmap
                memBitmap.CreateCompatibleBitmap(pDC, Width, Height);

                oldmemBitmap = memDC.SelectObject(&memBitmap);//將memBitmap選入內存DC
                memDC.BitBlt(0, 0, Width, Height, pDC, 0, 0, SRCCOPY);//復制屏幕圖像到內存DC

                //以下代碼保存memDC中的位圖到文件
                BITMAP bmp;
                memBitmap.GetBitmap(&bmp);//獲得位圖信息
               
                FILE *fp = fopen(filename, "w+b");

                BITMAPINFOHEADER bih = {0};//位圖信息頭
                bih.biBitCount = bmp.bmBitsPixel;//每個像素字節大小
                bih.biCompression = BI_RGB;
                bih.biHeight = bmp.bmHeight;//高度
                bih.biPlanes = 1;
                bih.biSize = sizeof(BITMAPINFOHEADER);
                bih.biSizeImage = bmp.bmWidthBytes * bmp.bmHeight;//圖像數據大小
                bih.biWidth = bmp.bmWidth;//寬度
               
                BITMAPFILEHEADER bfh = {0};//位圖文件頭
                bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);//到位圖數據的偏移量
                bfh.bfSize = bfh.bfOffBits + bmp.bmWidthBytes * bmp.bmHeight;//文件總的大小
                bfh.bfType = (WORD)0x4d42;
               
                fwrite(&bfh, 1, sizeof(BITMAPFILEHEADER), fp);//寫入位圖文件頭
               
                fwrite(&bih, 1, sizeof(BITMAPINFOHEADER), fp);//寫入位圖信息頭
               
                byte * p = new byte[bmp.bmWidthBytes * bmp.bmHeight];//申請內存保存位圖數據

                GetDIBits(memDC.m_hDC, (HBITMAP) memBitmap.m_hObject, 0, Height, p,
                    (LPBITMAPINFO) &bih, DIB_RGB_COLORS);//獲取位圖數據

                fwrite(p, 1, bmp.bmWidthBytes * bmp.bmHeight, fp);//寫入位圖數據

                delete [] p;

                fclose(fp);

                memDC.SelectObject(oldmemBitmap);
            }

            (五)改進
            可以在系統熱鍵中加入自定義熱鍵,進行動態的(按用戶需要的)截屏操作。 

            posted on 2008-04-25 17:43 vfdff 閱讀(355) 評論(0)  編輯 收藏 引用 所屬分類: 技術

            久久久久久久97| 精品综合久久久久久97超人| 51久久夜色精品国产| 久久国产V一级毛多内射| 久久笫一福利免费导航 | 久久久黄色大片| 亚洲欧美伊人久久综合一区二区 | 国产精品久久婷婷六月丁香| 精品国产乱码久久久久软件| 精品国产一区二区三区久久| 日韩久久久久中文字幕人妻| 久久精品人成免费| 久久午夜夜伦鲁鲁片免费无码影视| 国产亚洲色婷婷久久99精品| 久久se精品一区二区影院| 久久久无码精品亚洲日韩按摩| 色综合久久天天综线观看| 国产精品久久毛片完整版| 亚洲精品99久久久久中文字幕 | 久久久久亚洲AV成人网人人网站| 欧美伊香蕉久久综合类网站| 18岁日韩内射颜射午夜久久成人| 精品精品国产自在久久高清| 中文无码久久精品| 日韩欧美亚洲国产精品字幕久久久| 久久精品一区二区国产| 久久精品国产亚洲av日韩| 久久人人添人人爽添人人片牛牛| 亚洲国产精品综合久久一线| 久久久久无码中| 久久国产成人午夜AV影院| 国产精品久久国产精麻豆99网站| 国内精品人妻无码久久久影院导航| 热综合一本伊人久久精品| 久久国产视屏| 一本大道久久香蕉成人网| 色婷婷狠狠久久综合五月| 色婷婷噜噜久久国产精品12p | 精品久久久久久国产潘金莲| 欧美午夜精品久久久久免费视| 久久国产亚洲高清观看|