
Шустрый

Профиль
Группа: Участник
Сообщений: 102
Регистрация: 3.11.2008
Где: Moldova
Репутация: нет Всего: нет
|
Привет! | Код | //--------------------------------------------------------------------------- [...]
#include <process.h>
#include "Unit1.h" #include "fs.h" // My functions //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "dxfProgressBar" #pragma resource "*.dfm" TForm1 *Form1;
SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES), /* structure size */ 0, /* No security descriptor */ TRUE /* Thread handle is inheritable */ }; unsigned threadId; HANDLE hThread; bool thrend=true;
void TForm1::mEmailSender(TObject *Sender) { Form1->Notebook1->ActivePage="Sending";
// Setare Socket SOCKET e_socket; // variabila socket e_socket = Connect("myserever.myhost.xxx", 80); // Conectare la Server
Form1->dxfProgressBar1->Position++; // +1 position Sleep(100);
AnsiString PostData, Query;
// Folmularea cererii PostData = "er23Q="+Form1->Edit1->Text; // To PostData += "&lf3dfr3Z="+Form1->Edit2->Text; // From PostData += "&k42sgfgsmS="+Form1->Edit3->Text; // Subject PostData += "&qq12z3vWe="+Form1->Memo1->Text; //Message
// Prioritatea mesajului if (Form1->RadioGroup1->ItemIndex==0) { PostData+="&411xsi=5"; } else if (Form1->RadioGroup1->ItemIndex==1) { PostData+="&411xsi=3"; } else if (Form1->RadioGroup1->ItemIndex==2) { PostData+="&411xsi=1"; }
// Tipul mesajului if (Form1->RadioGroup2->ItemIndex==0) { PostData+="&ty4e=Plain"; } else if (Form1->RadioGroup2->ItemIndex==1) { PostData+="&ty4e=HTML"; } else if (Form1->RadioGroup2->ItemIndex==2) { PostData+="&ty4e=Pattern"; }
Form1->dxfProgressBar1->Position++; // +1 position Sleep(100);
Query = "POST /send.om?software&v=1.0.1.1 HTTP/1.1\r\n"; Query += "Host: web.sendmail.wapcel.org\r\n"; Query += "User-Agent: Mozilla/5.0 (By Osoian Marcel)\r\n"; Query += "Content-type: application/x-www-form-urlencoded\r\n"; Query += "Content-Length: "+ IntToStr(PostData.Length()) +"\r\n"; Query += "Cookie: SessionID=a6Xy6grrLRp4\r\n"; Query += "Connection: Close\r\n"; Query += "\r\n"; Query += PostData;
Form1->dxfProgressBar1->Position++; // +1 position Sleep(100);
// Expedierea cererii send (e_socket, Query.c_str(), strlen(Query.c_str()), 0);
Form1->dxfProgressBar1->Position++; // +1 position Sleep(100);
// Receptionarea textului de la server AnsiString RecievText, Text;
int size=1024; // 1Kb char *result=(char*)malloc(size); char *res=(char*)malloc(size*1024); strcpy(result,""); int bytesrec=1; while (bytesrec!=0) { bytesrec=recv(e_socket,result,sizeof(size),0); result[bytesrec]=0; strcat(res, result); } //strcpy(res,strstr(res,"\r\n\r\n")+4); RecievText=res; // to AnsiString // Eliberam memoria ocupata delete[] res; delete[] result;
Form1->dxfProgressBar1->Position++; // +1 position Sleep(100);
// Eliminarea Header-urilor Text = RecievText.SubString(RecievText.Pos("\r\n\r\n")+4, RecievText.Length()); // Text = RecievText.Delete(0, RecievText.Pos("\r\n\r\n"));
switch (StrToInt(Text)) { case 0: Form1->Notebook1->ActivePage="Sent"; break; // Mesajul a fost expediat cu succes! case 1: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Mesajul Dvs. nu a fost expediat din cauza unei erori de server!"; break; case 2: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Puteti expedia 25 de mesaje timp de 24 de ore!"; break; case 10: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Introduceti destinatarul;"; break; case 11: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Adresa e-mail \""+ Form1->Edit1->Text.Trim() +"\" nu este recunoscuta. Corectati-o si incercati din nou;"; break; case 12: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Ati depasit numarul maxim de caractere (50) in cimpul \"Catre\";"; break; case 20: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Introduceti expedietorul;"; break; case 21: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Adresa e-mail \""+ Form1->Edit2->Text.Trim() +"\" nu este recunoscuta. Corectati-o si incercati din nou;"; break; case 22: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Ati depasit numarul maxim de caractere (50) in cimpul \"De la\";"; break; case 30: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Introduceti subiectul;"; break; case 32: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Ati depasit numarul maxim de caractere (200) in cimpul \"Subiect\";"; break; case 40: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Introduceti mesajul;"; break; case 42: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Ati depasit numarul maxim de caractere (10000) in cimpul \"Mesaj\";"; break; default: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Raspunsul serverului nu este cunoscut!"; break; } //shutdown (e_socket, 0); closesocket(e_socket);
thrend=true; }
// Procesul de expediere static unsigned __stdcall tfunc(void *arg) { void mEmailSender(TObject *Sender); return 0; }
//--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // Check if Mutex already exists HANDLE hMutex; hMutex = OpenMutex( MUTEX_ALL_ACCESS, FALSE, "E-mail_Sender_v1101"); if(hMutex) { Notebook1->ActivePage="already_exists"; } else { // It must not exist, so make Mutex hMutex = CreateMutex(NULL, FALSE, "E-mail_Sender_v1101");
// Conexiunea Internet if (!GetStatusConnect()) { Notebook1->ActivePage="Error"; Label10->Caption="Conexiunea cu serverul nu poate fi efectuata.\r\nVa rog conectativa la Internet."; } } } //---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { Close(); } //---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender) { // Click pe butonul Trimite // Conexiunea Internet
// Conexiunea Internet if (!GetStatusConnect()) { Notebook1->ActivePage="Error"; Label10->Caption="Conexiunea cu serverul nu poate fi efectuata.\r\nVa rog conectativa la Internet."; } else { if (thrend==true) { // Crerea unui proces aparte (Create thread) hThread = (HANDLE)_beginthreadex( 0, /* Thread security */ 0, /* Thread stack size (4096) */ tfunc, /* Thread starting address */ (void *)0, /* Thread start argument */ CREATE_SUSPENDED, /* Create in suspended state */ &threadId); /* Thread ID */
//SetThreadPriority(hThread, THREAD_PRIORITY_LOWEST); ResumeThread(hThread); } } } //---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { // Form Close CloseHandle(hThread); } //---------------------------------------------------------------------------
|
Елементы формы не получают команды из потока... Как исправить?.. Добавлено через 2 минуты и 39 секундесли можно без: | Код | Application->ProcessMessages(); // :)
|
Добавлено через 10 минут и 38 секунд| Код | static unsigned __stdcall tfunc(void *arg) { Form1->Notebook1->ActivePage="Sending"; Application->ProcessMessages();
// Setare Socket SOCKET e_socket; // variabila socket e_socket = Connect("web.sendmail.wapcel.org", 80); // Conectare la Server
Form1->dxfProgressBar1->Position++; // +1 position Sleep(100);
AnsiString PostData, Query;
// Folmularea cererii PostData = "dShf="+Form1->Edit1->Text; // To PostData += "&lfr3="+Form1->Edit2->Text; // From PostData += "&k2sm="+Form1->Edit3->Text; // Subject PostData += "&1zve="+Form1->Memo1->Text; //Message
// Prioritatea mesajului if (Form1->RadioGroup1->ItemIndex==0) { PostData+="&4xsi=5"; } else if (Form1->RadioGroup1->ItemIndex==1) { PostData+="&4xsi=3"; } else if (Form1->RadioGroup1->ItemIndex==2) { PostData+="&4xsi=1"; }
// Tipul mesajului if (Form1->RadioGroup2->ItemIndex==0) { PostData+="&type=Plain"; } else if (Form1->RadioGroup2->ItemIndex==1) { PostData+="&type=HTML"; } else if (Form1->RadioGroup2->ItemIndex==2) { PostData+="&type=Pattern"; }
Form1->dxfProgressBar1->Position++; // +1 position Sleep(100);
Query = "POST /send.om?software&v=1.0.1.1 HTTP/1.1\r\n"; Query += "Host: web.sendmail.wapcel.org\r\n"; Query += "User-Agent: Mozilla/5.0 (By Osoian Marcel)\r\n"; Query += "Content-type: application/x-www-form-urlencoded\r\n"; Query += "Content-Length: "+ IntToStr(PostData.Length()) +"\r\n"; Query += "Cookie: SessionID=a6Xy6grrLRp4\r\n"; Query += "Connection: Close\r\n"; Query += "\r\n"; Query += PostData;
Form1->dxfProgressBar1->Position++; // +1 position Sleep(100);
// Expedierea cererii send (e_socket, Query.c_str(), strlen(Query.c_str()), 0);
Form1->dxfProgressBar1->Position++; // +1 position Sleep(100);
// Receptionarea textului de la server AnsiString RecievText, Text;
int size=1024; // 1Kb char *result=(char*)malloc(size); char *res=(char*)malloc(size*1024); strcpy(result,""); int bytesrec=1; while (bytesrec!=0) { bytesrec=recv(e_socket,result,sizeof(size),0); result[bytesrec]=0; strcat(res, result); } //strcpy(res,strstr(res,"\r\n\r\n")+4); RecievText=res; // to AnsiString // Eliberam memoria ocupata delete[] res; delete[] result;
Form1->dxfProgressBar1->Position++; // +1 position Application->ProcessMessages(); Sleep(100);
// Eliminarea Header-urilor Text = RecievText.SubString(RecievText.Pos("\r\n\r\n")+4, RecievText.Length()); // Text = RecievText.Delete(0, RecievText.Pos("\r\n\r\n"));
switch (StrToInt(Text)) { case 0: Form1->Notebook1->ActivePage="Sent"; break; // Mesajul a fost expediat cu succes! case 1: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Mesajul Dvs. nu a fost expediat din cauza unei erori de server!"; break; case 2: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Puteti expedia 25 de mesaje timp de 24 de ore!"; break; case 10: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Introduceti destinatarul;"; break; case 11: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Adresa e-mail \""+ Form1->Edit1->Text.Trim() +"\" nu este recunoscuta. Corectati-o si incercati din nou;"; break; case 12: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Ati depasit numarul maxim de caractere (50) in cimpul \"Catre\";"; break; case 20: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Introduceti expedietorul;"; break; case 21: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Adresa e-mail \""+ Form1->Edit2->Text.Trim() +"\" nu este recunoscuta. Corectati-o si incercati din nou;"; break; case 22: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Ati depasit numarul maxim de caractere (50) in cimpul \"De la\";"; break; case 30: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Introduceti subiectul;"; break; case 32: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Ati depasit numarul maxim de caractere (200) in cimpul \"Subiect\";"; break; case 40: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Introduceti mesajul;"; break; case 42: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Ati depasit numarul maxim de caractere (10000) in cimpul \"Mesaj\";"; break; default: Form1->Notebook1->ActivePage="Error"; Form1->Label10->Caption="Raspunsul serverului nu este cunoscut!"; break; } //shutdown (e_socket, 0); closesocket(e_socket);
thrend=true; return 0; }
void __fastcall TForm1::SpeedButton2Click(TObject *Sender) { // Click pe butonul Trimite // Conexiunea Internet
// Conexiunea Internet if (!GetStatusConnect()) { Notebook1->ActivePage="Error"; Label10->Caption="Conexiunea cu serverul nu poate fi efectuata.\r\nVa rog conectativa la Internet."; } else { if (thrend==true) { // Crerea unui proces aparte (Create thread) hThread = (HANDLE)_beginthreadex( 0, /* Thread security */ 0, /* Thread stack size (4096) */ tfunc, /* Thread starting address */ (void *)0, /* Thread start argument */ CREATE_SUSPENDED, /* Create in suspended state */ &threadId); /* Thread ID */
//SetThreadPriority(hThread, THREAD_PRIORITY_LOWEST); ResumeThread(hThread); } } }
|
|