Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151

Как сделать, чтобы загруженная картинка сохранялась в файл, не попадая в буфер?

25.11.2013, 15:39. Показов 1391. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Ниже представлена функция получения капчи из CppWebBrowser.
Инклуды на всякий случай пишу все, а то не помню какие за что отвечают
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vcl.h>
#include <Clipbrd.hpp>
#include <mshtml.h>
#include <memory>
#include <StrUtils.hpp>
#include <jpeg.hpp>
#include <wininet.h>
 
#pragma hdrstop
#include "inifiles.hpp"
#include "Unit2.h"
#include "Unit1.h"
#include "Unit3.h"
#include "Unit4.h"
C++
1
2
TJPEGImage *jpg = new TJPEGImage();
Graphics::TBitmap *bmp = new Graphics::TBitmap();
Сама функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void TForm2::IMG()
 {
  //обработчик вытягивания/сохранения картинки капчи
  Variant body, imgs, controlRange;
 
  body = VK->OleObject.OlePropertyGet("document").OlePropertyGet("body");
  imgs = VK->OleObject.OlePropertyGet("document").OlePropertyGet("images").OleFunction("item", 0);
  controlRange = body.OleFunction("createControlRange");
  controlRange.OleProcedure("add", imgs);
  controlRange.OleProcedure(WideString("execCommand").c_bstr(), WideString("Copy").c_bstr(), false, EmptyParam);
 
  if (Clipboard()->HasFormat(CF_BITMAP))
  {
    bmp->LoadFromClipboardFormat(CF_BITMAP, Clipboard()->GetAsHandle(CF_BITMAP), 0);
    jpg->Assign(bmp);
    jpg->SaveToFile("Capcha.jpg");
    Form1->StatusLabel->Caption="Картинка получена и сохранена.";
    pause();
    AntiGt = new AntiGate(true);
    AntiGt->Resume();
  }
}
Можно ли как-то сделать, чтобы картинка сохранялась в файл Capcha.jpg не попадая в буфер? Буду очень благодарен тому, кто изменит функцию.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.11.2013, 15:39
Ответы с готовыми решениями:

Как сделать, чтобы авторизация сохранялась
делаю регистрацию и автоматизацию но не знаю как сделать чтобы после закрытия браузера все данные о пользователе сохранялись те чтобы...

Как сделать, чтобы переменная PATH сохранялась после перезагрузки?
Здравствуйте! Помогите настроить переменную PATH так, чтоб после перезагрузки внесенные изменения сохранялись. Вводил в терминале: export...

DateTimePicker: как сделать, чтобы сохранялась и выводилась только дата, без времени?
DataModule3.ZakazeTable.FieldByName('ДатаЗаказа').AsDateTime := DateTimer2.Date; Вот строчка из кода. При вводе выбираю только дату, но в...

3
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
25.11.2013, 16:17
Пример: капча с игрового сайта (форума) через HTTP и FileStream без браузера. Сейчас там капчи вроде нет, может не работать, но раньше все было ок.

Инклуды (просто скопировал, могут быть лишние):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdHTTP.hpp>
#include <IdTCPClient.hpp>
#include <IdTCPConnection.hpp>
#include <StrUtils.hpp>
#include "cRSA\cGarenaRSA.hpp"  // для авторизации
#include <jpeg.hpp>
#include "SHDocVw_OCX.h"
#include <OleCtrls.hpp>
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
  AnsiString site = "http://fairplay.garena.com/search.php?search_type=1", image_link;
  Memo->Text = UTF8Decode(HTTP->Get(site));
  for (int I = 0; I < Memo->Lines->Count; I++)
  {
    int PosReturn = Memo->Lines->Strings[I].Pos("image.php?");
    if (PosReturn)
    {
      image_link = MidStr(Memo->Lines->Strings[I], PosReturn, Memo->Lines->Strings[I].Pos("alt=")-PosReturn-2);
      image_link = "http://fairplay.garena.com/" + image_link;
      image_link = AnsiReplaceStr(image_link, "amp;", "");
//    ShowMessage(image_link);
      break;
    }
  }
 
/*  TJPEGImage *image = new TJPEGImage;
  TStream *picture = new TMemoryStream;
  HTTP->Get(image_link, picture);
  picture->Position = NULL;
  image->LoadFromStream(picture);
  Image1->Picture->Assign(image);
//  AnsiString ImageFullName = GetCurrentDir()+"\\captcha.jpg";
//  Image1->Picture->SaveToFile(ImageFullName);
//  picture->Position = NULL;
  image->Free();
  picture->Free();
*/  
 
  AnsiString ImageFullName = GetCurrentDir()+"\\captcha.jpg";
  TFileStream* fs = new TFileStream(ImageFullName, FileCreate(""));
  HTTP->Get(image_link, fs);
  delete fs;
  Image1->Picture->LoadFromFile(ImageFullName);
Миниатюры
Как сделать, чтобы загруженная картинка сохранялась в файл, не попадая в буфер?  
1
25.11.2013, 16:27

Не по теме:

Запуск нескольких копий программы, которая может столкнуться с капчей в контакте - очевидно, это брутфорс или рассылка спама.
ИМХО не стоит помогать людям в таком деле

0
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
25.11.2013, 16:29  [ТС]
Цитата Сообщение от Lelik-pahan Посмотреть сообщение

Не по теме:

Запуск нескольких копий программы, которая может столкнуться с капчей в контакте - очевидно, это брутфорс или рассылка спама.
ИМХО не стоит помогать людям в таком деле

На первый взгляд это может так показаться, но в моем случае уверяю, что программа не для спама. Могу в личку описать для чего предназначена моя программа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2013, 16:29
Помогаю со студенческими работами здесь

Сделать, чтобы запись сохранялась и в базе данных
private void button2_Click(object sender, EventArgs e) { try { ...

Нужно, чтобы картинка на сайте растягивалась под размер экрана, как это сделать ? (Пропорционально, картинка высокого расширения и качества)
binding text

Сделать так, чтобы папка сохранялась с датой и временем в названии
Помогите! не могу понять как в Delphi7 сделать так чтоб папка создавалась с названием даты и время. Код: if...

Сделать так, чтобы папка сохранялась с заданным названием, содержащим дату
Помогите не могу понять как сделать так чтобы папка сохранялась с названием примерно так 01-дата 07.08.12 и он дальше должна продолжать 02...

Не отображается картинка загруженная в image
Не отображается картинка загруженная в image, но при этом она видна сбоку, но в окне почему то не отображается. Устал уже от поиска решения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru