Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 1
Регистрация: 14.10.2009
Сообщений: 6

Как перехватить буфер обмена?

15.10.2009, 17:34. Показов 3969. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как сделать чтоб скопированную в буфер обмена картинку, или текст отправилялась на почту?

к примеру на дельфине отправка файла, но надо что буфер обмена отправлялось...
можно на дельфи или на с++
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
IdSMTP1.Host:='smtp.mail.ru'; //
IdSMTP1.Port:=2525; //
IdSMTP1.Username:=login; //
IdSMTP1.Password:=pass; //
IdSMTP1.AuthenticationType:=atLogin;
with IdMessage1
do
begin
 
From.Text :=Tema; //
Recipients.EMailAddresses := [email]qwqwq@mail.ru[/email]; //
Subject := [email]qwerty@mail.ru[/email];
if FileExists(Edit1.Text)
then
 
TIdAttachment.Create(idmessage1.MessageParts,C:\Pr ogram Files\1.txt);
как то так должно быть?
Delphi
1
2
3
4
5
6
7
8
9
var
Msg: TIdMessage;
begin
Msg.Subject:=?тема сообщения?;
Msg.Recipients.EMailAddresses:=?qwerty@mail.ru?;
Msg.From.Adress:=?delphi@mail.ru?;
Msg.Body.Text:=SetTextBuf();
Msg.Date:=StrToDate(?01.12.2004?);/
end;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2009, 17:34
Ответы с готовыми решениями:

Как Caption скопировать в буфер обмена
Добрый день! Есть программа которая считает значения полей Edit и выводит результат в Button1->Caption. Внимание вопрос. Как сделать...

Как сохранить буфер обмена в файл?
Здравствуйте, я начинающий программист на Builder C, я решил обратиться к Вам за помощью. Итак, задача такая: у меня есть некий...

Как скопировать текст в буфер обмена?
есть к примеру текст Hello как его скопировать в буффер обмена? подскажите плз

9
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
15.10.2009, 18:41
Ну, я не знаю, какие там есть опции у аттачментов, но как самое простое решение, ты можешь загрузить картинку в TBitmap, потом этот битмап сохранить во временный файл, отправить его, удалить временный файл.
C++
1
2
3
TBitmap*b=new TBitmap();
b->LoadFromClipboard();//Как-то так
b->SaveToFile("Attacment.bmp");
Можешь конечно и в jpg конвертить, чтобы меньше места занимало.
С текстом можно так же.
0
0 / 0 / 0
Регистрация: 15.10.2009
Сообщений: 3
15.10.2009, 19:52
Слушай, Otaka, а как сдулать, если я хачу, чтоб в теле письма, был текст который хранится в буфере обмена? т.е. SomeStringData_Variable := Clipboard.AsText; и это приравневаем к телу письма?

P.S. код на Делфе, плз если можеш оналог на С++
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
15.10.2009, 21:18
Наверное. Никогда не отправлял письма с аттачами.
Насчет перевести на с++. Я не знаю работает ли это, это транслит с того, что написал ты:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
IdSMTP1->Host="smtp.mail.ru";
IdSMTP1->Port=2525;
IdSMTP1->Username=login;
IdSMTP1->Password=pass;
IdSMTP1->AuthenticationType=atLogin;
 
 
From.Text =Tema;
IdMessage1->Recipients->EmailAddresses = "qwqwq@mail.ru";
IdMessage1->Subject = "qwerty@mail.ru";
if(FileExists(Edit1->Text))
    {
    TIdAttachment* attach=TIdAttachment(idmessage1->MessageParts,"C:\\Program Files\\1.txt");
0
0 / 0 / 0
Регистрация: 15.10.2009
Сообщений: 3
15.10.2009, 21:38
бРО, слушай, мне надо не аттачем, а чтобы чисто тект. Причем не из файла, а из буфера обмена
0
1 / 1 / 1
Регистрация: 14.10.2009
Сообщений: 6
15.10.2009, 21:42  [ТС]
Цитата Сообщение от aka_k4 Посмотреть сообщение
бРО, слушой, мне надо не аттачем, а бле чтоб чисто тект.
ды погодь ты

Otaka, смари

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
38
39
40
41
42
43
void __fastcall TForm1::OnDRAWCLIPBOARD(TWMNoParams& a)
{
 RichEdit1->Visible = false;
 Image1->Visible = false;
 try
 {
  if (Clipboard()->HasFormat(CF_BITMAP))
  {
   Image1->Picture->LoadFromClipboardFormat(
    CF_BITMAP, Clipboard()->GetAsHandle(CF_BITMAP), 0);
   Image1->Visible = true;
  }
  else
  if (Clipboard()->HasFormat(CF_TEXT))
  {
   RichEdit1->Text = Clipboard()->AsText;
   RichEdit1->Visible = true;
  }
 }
 __finally
 {
  SendMessage(Hclb, WM_DRAWCLIPBOARD, 0, 0);
 }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::OnCHANGECBCHAIN(TWMChangeCBChain& a)
{
 if(a.Next == a.Remove)
  Hclb = a.Next;
 if(Hclb)
  SendMessage(Hclb, WM_CHANGECBCHAIN, (WPARAM)a.Remove, (LPARAM)Hclb);//(LPARAM)a.Next);
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 Hclb = SetClipboardViewer(Handle);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
 ChangeClipboardChain(Handle, Hclb);
}
//---------------------------------------------------------------------------
так вот надо что бы содержимое поле RichEdit1 в Memo1 а потом
уже таким образом отпарвляет на почту:
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  IdMessage1->Body->Assign(Memo1->Lines);//тут мы берем текст из Memo
  IdMessage1->From->Text = "F-ermion@mail.ru";//от кого письмо (если сервак не проверяет, можно левый адрес)
  IdMessage1->Subject  = "Mail From Control";//Заголовок письма (русскими буквами - глючит... надо ещё разбираться)
  IdMessage1->Recipients->EMailAddresses = "F-ermion@yandex.ru";//Адрес получателя
//  IdMessage1->Priority = TIdMessagePriority(mpHighest);// приоритет письма... если разремить - будет высоким :)
//  IdMessage1->CCList->EMailAddresses = "F-ermion@yandex.ru";//Копия письма (если надо)
 IdSMTP1->Host = "smtp.mail.ru";//адрес СМТП сервака
 IdSMTP1->UserId = "F-ermion";//Логин
 IdSMTP1->Password = "******";//Шесть звёздочек :)))
 IdSMTP1->Port = 25;// стандартный порт
 IdSMTP1->AuthenticationType = atLogin;//с авторизацией
try //дальше собственно отправка и обработка кое каких исключений
   {
    try
       {
          if (IdSMTP1->Connected()) IdSMTP1->Disconnect();
              IdSMTP1->Connect();
              IdSMTP1->Send(IdMessage1);
       }
       catch (Exception &exception)
            {
             IdSMTP1->Disconnect();
             MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
             Abort;
            }
             // My Code Here
    }
     catch (Exception &exception)
          {
           Application->ShowException(&exception);
           IdSMTP1->Disconnect();
          }
}
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
15.10.2009, 21:59
А в чем вопрос: "Как из того что есть сделать отправку почты?" ?

Ты еще в нижний свой пример вставь:
C++
1
2
3
4
5
6
7
8
if (Clipboard()->HasFormat(CF_BITMAP))
  {
  TBitmap*b=new TBitmap();
  b->LoadFromClipboardFormat(CF_BITMAP, Clipboard()->GetAsHandle(CF_BITMAP), 0);
  b->SaveToFile("attach.bmp");
  TIdAttachment* attach=TIdAttachment(IdMessage1->MessageParts,"attach.bmp");
  //чет там мож еще надо, не знаю
  }
1
1 / 1 / 1
Регистрация: 14.10.2009
Сообщений: 6
15.10.2009, 22:07  [ТС]
Цитата Сообщение от Otaka Посмотреть сообщение
А в чем вопрос: "Как из того что есть сделать отправку почты?" ?
Да! если не сложно канешь

Ты еще в нижний свой пример вставь:
C++
1
2
3
4
5
6
7
8
if (Clipboard()->HasFormat(CF_BITMAP))
  {
  TBitmap*b=new TBitmap();
  b->LoadFromClipboardFormat(CF_BITMAP, Clipboard()->GetAsHandle(CF_BITMAP), 0);
  b->SaveToFile("attach.bmp");
  TIdAttachment* attach=TIdAttachment(IdMessage1->MessageParts,"attach.bmp");
  //чет там мож еще надо, не знаю
  }
не надо...
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
16.10.2009, 22:09
Я тут попробовал чуть-чуть.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "IdExplicitTLSClientServerBase"
#pragma link "IdSMTPBase"
#pragma resource "*.dfm"
TForm1 *Form1;
 
char koi_table[]=
{
'ю','а','б','ц','д','е','ф','г','х','и','й','к','л','м','н','о',
'п','я','р','с','т','у','ж','в','ь','ы','з','ш','э','щ','ч','ъ',
'Ю','А','Б','Ц','Д','Е','Ф','Г','Х','И','Й','К','Л','М','Н','О',
'П','Я','Р','С','Т','У','Ж','В','Ь','Ы','З','Ш','Э','Щ','Ч','Ъ'
};
 
char table_koi[]=
{
'б','в','ч','з','д','е','ц','ъ','й','к','л','м','н','о','п','р',
'т','у','ф','х','ж','и','г','ю','ы','э','я','щ','ш','ь','а','с',
'Б','В','Ч','З','Д','Е','Ц','Ъ','Й','К','Л','М','Н','О','П','Р',
'Т','У','Ф','Х','Ж','И','Г','Ю','Ы','Э','Я','Щ','Ш','Ь','А','С'
};
String Koi_Ansi(String s)
        {
        int len=s.Length();
        char*str=new char[len+1];
        char*src=s.c_str();
        str[len]=0;
        for(int i=0;i<len;i++)
                {
                if(src[i]>='А')
                        str[i]=koi_table[(UCHAR)src[i]-0xc0];
                }
        String res=str;
        delete [] str;
        return res;
        }
String Ansi_Koi(String s)
        {
        int len=s.Length();
        char*str=new char[len+1];
        char*src=s.c_str();
        str[len]=0;
        for(int i=0;i<len;i++)
                {
                if(src[i]>='А')
                        str[i]=table_koi[(UCHAR)src[i]-0xc0];
                }
        String res=str;
        delete [] str;
        return res;
        }
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
///А тут можно раскоментировать, чтобы отправлять текст из буффера обмена
/*
RichEdit1->Clear();
RichEdit1->PasteFromClipboard();
*/
IdMessage1->Body->Assign(RichEdit1->Lines);//тут мы берем текст из Memo
IdMessage1->From->Text = Edit2->Text;//от кого письмо (если сервак не проверяет, можно левый адрес)
IdMessage1->Subject  = Ansi_Koi(Edit3->Text);//Заголовок письма (русскими буквами - глючит(уже нет)... надо ещё разбираться...(уже разобрался))
IdMessage1->Recipients->EMailAddresses = Edit1->Text;//Адрес получателя
IdSMTP1->Host = Edit5->Text;//адрес СМТП сервака
IdSMTP1->Username=Edit4->Text;
IdSMTP1->Password = Edit6->Text;//Шесть звёздочек :)))
IdSMTP1->Port = 25;// стандартный порт
try //дальше собственно отправка и обработка кое каких исключений
   {
    try
       {
          if (IdSMTP1->Connected()) IdSMTP1->Disconnect();
              IdSMTP1->Connect();
              IdSMTP1->Send(IdMessage1);
       }
       catch (Exception &exception)
            {
             IdSMTP1->Disconnect();
             MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
             Abort;
            }
             // My Code Here
    }
     catch (Exception &exception)
          {
           Application->ShowException(&exception);
           IdSMTP1->Disconnect();
          }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
if(Key!=VK_RETURN)return;
 
if(Edit2->Text.Pos("@")==0)
        {
        ShowMessage("Электронная почта в неправильном формате");
        return;
        }
 
String serv=Edit2->Text.SubString(Edit2->Text.Pos("@")+1,Edit2->Text.Length());
String name=Edit2->Text.SubString(1,Edit2->Text.Pos("@")-1);
Edit4->Text=name;
Edit5->Text=String("mail.")+serv;
}
//---------------------------------------------------------------------------
Версия Indy у меня, наверное, немного отличается, поэтому не удивляйся, что некоторые свойства не совпадают(тот же IdSMTP1->Username). С русским языком все впорядке, разве не видно, что там в заголовке нужно передавать KOI8?
Вложения
Тип файла: rar MailSender.rar (330.9 Кб, 48 просмотров)
1
0 / 0 / 0
Регистрация: 15.10.2009
Сообщений: 3
17.10.2009, 15:08
о_О а ты маньяк парень))) круто впринципе ога .. сама суть мышления.... ( еще цыферки зобыл )

но, мб проще перехватить API?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2009, 15:08
Помогаю со студенческими работами здесь

Как скопировать текст в буфер обмена из Memo
Как скопировать текст в буфер обмена из Memo,У меня есть несколько Memo и мне нужно сделать кнопку котороя будет копировать текст из мемо...

Как узнать содержит ли буфер обмена данные формата CF_TEXT
Здравствуйте. А как на билдере будет буфер обмена? А конкретнее мне нужно узнать содержит ли буфер обмена данные формата CF_TEXT

Как сделать чтобы при нажатии на кнопку текст с Edit копировался в буфер обмена
А не скажите как сделать чтобы при нажатие на кнопку текст с Edit копировался в буфер обмена на Билдере

Буфер обмена
Как в билдере скопировать значение из буфера обмена и записать тудаже??

Буфер обмена
Как сделать так что бы программа постоянно проверяла буфер обмена и содержимое буфера добавляла в Memo1. Додумался только до : ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru