Форум программистов, компьютерный форум CyberForum.ru

Скриншот программно. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
Grex
1 / 1 / 0
Регистрация: 03.12.2008
Сообщений: 55
28.06.2011, 23:47     Скриншот программно. #1
Добрый вечер.
Сделал скриншот программно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
void __fastcall TForm1::Button2Click(TObject *Sender)
{
HDC hdc = GetDC(0);
    if (hdc)
    {
        Graphics::TBitmap* bmp = new Graphics::TBitmap();
        __try
        {
            int W = Screen->Width;  
            int H = Screen->Height; 
            bmp->Width = W; 
            bmp->Height = H;    
            BitBlt(bmp->Canvas->Handle, 0, 0, W, H, hdc, 0, 0, SRCCOPY);
            TJPEGImage* jpg = new TJPEGImage(); 
            __try
            {
                jpg->Assign(bmp);     
                jpg->CompressionQuality = 65; 
                jpg->SaveToFile("1.jpeg");
            }
            __finally
            {
                delete jpg;
            };
        }
        __finally
        {
            delete bmp;
        };
    };
}
Сохраняю его как 1.jpeg.
Как мне сделать так, чтобы скриншот каждый раз не перезаписывался, а сохранялся как 2.jpeg 3.jpeg и т.д.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2011, 23:47     Скриншот программно.
Посмотрите здесь:

Клиент-сервер , скриншот C++
Скриншот окна программы C++
C++ Скриншот, работа с bmp
C++ Скриншот экрана
C++ Скриншот экрана
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
28.06.2011, 23:52     Скриншот программно. #2
сделай счетчик изображений, после каждой итерации увеличивай, полученное число переводи строку. Дальше к строке прибавь ".jpeg" и передавай
C++
1
jpg -> SaveToFile( NameOfPicture ); // std::string NameOfPicture
Добавлено через 15 секунд
сделай счетчик изображений, после каждой итерации увеличивай, полученное число переводи строку. Дальше к строке прибавь ".jpeg" и передавай
C++
1
jpg -> SaveToFile( NameOfPicture ); // std::string NameOfPicture
Grex
1 / 1 / 0
Регистрация: 03.12.2008
Сообщений: 55
29.06.2011, 00:02  [ТС]     Скриншот программно. #3
Цитата Сообщение от Mиxaил Посмотреть сообщение
сделай счетчик изображений, после каждой итерации увеличивай, полученное число переводи строку. Дальше к строке прибавь ".jpeg" и передавай
C++
1
jpg -> SaveToFile( NameOfPicture ); // std::string NameOfPicture
Добавлено через 15 секунд
сделай счетчик изображений, после каждой итерации увеличивай, полученное число переводи строку. Дальше к строке прибавь ".jpeg" и передавай
C++
1
jpg -> SaveToFile( NameOfPicture ); // std::string NameOfPicture
Ну цикл написать не проблема, а вот прибавить строку и передать её, это уже сложновато.
Вы не мог ли бы наметать быстро?
Просто пока я разберусь...., а всем, как всегда хочется быстрее... =) (я просто в диплом функцию эту вставил, а его сдача - завтра)
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
29.06.2011, 00:08     Скриншот программно. #4
вот попробуй.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
void __fastcall TForm1::Button2Click(TObject *Sender)
{
      static int  counter = 0;  // счётчик
    
HDC hdc = GetDC(0);
        if (hdc)
    {
        Graphics::TBitmap* bmp = new Graphics::TBitmap();
        __try
        {
            int W = Screen->Width;  
            int H = Screen->Height; 
            bmp->Width = W; 
            bmp->Height = H;    
                        BitBlt(bmp->Canvas->Handle, 0, 0, W, H, hdc, 0, 0, SRCCOPY);
            TJPEGImage* jpg = new TJPEGImage(); 
            __try
            {
                                jpg->Assign(bmp);     
                jpg->CompressionQuality = 65; 
                              
                           counter++;
                           AnsiString  file_name = IntToStr(counter) + ".jpg";   // линкуем
                      
                                jpg->SaveToFile(file_name);
            }
            __finally
            {
                delete jpg;
            };
        }
        __finally
        {
            delete bmp;
        };
        };
}
Grex
1 / 1 / 0
Регистрация: 03.12.2008
Сообщений: 55
29.06.2011, 00:19  [ТС]     Скриншот программно. #5
Цитата Сообщение от xAtom Посмотреть сообщение
вот попробуй.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
void __fastcall TForm1::Button2Click(TObject *Sender)
{
      static int  counter = 0;  // счётчик
    
HDC hdc = GetDC(0);
        if (hdc)
    {
        Graphics::TBitmap* bmp = new Graphics::TBitmap();
        __try
        {
            int W = Screen->Width;  
            int H = Screen->Height; 
            bmp->Width = W; 
            bmp->Height = H;    
                        BitBlt(bmp->Canvas->Handle, 0, 0, W, H, hdc, 0, 0, SRCCOPY);
            TJPEGImage* jpg = new TJPEGImage(); 
            __try
            {
                                jpg->Assign(bmp);     
                jpg->CompressionQuality = 65; 
                              
                           counter++;
                           AnsiString  file_name = IntToStr(counter) + ".jpg";   // линкуем
                      
                                jpg->SaveToFile(file_name);
            }
            __finally
            {
                delete jpg;
            };
        }
        __finally
        {
            delete bmp;
        };
        };
}
Блин, Атом....! Ты зверь ). Спасибо тебе огромное, не раз меня выручил!
Yandex
Объявления
29.06.2011, 00:19     Скриншот программно.
Ответ Создать тему
Опции темы

Текущее время: 06:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru