⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sms_unit1.cpp

📁 基于普通手机的短信编程源码
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "sms_Unit1.h"
#include "SendSmsThread.h"
#include "ReceiveSmsThread.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <dir.h>
TForm1 *Form1;
SendSmsThread * mySendSmsThread;
ReciveSmsThread *myReceiveSmsThread;
int is_send_thread_running=0;
int is_receive_thread_running=0;
int send_thread_stop=0;
int receive_thread_stop=0;
int GetCfgItem(char * cfg_file,char *cfg_seg, char *cfg_item, char *value);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
        char comm[100],bite_rate[100],sms_center[100],recv_comm[100],recv_bite_rate[100];
        char tmp[100],full_file_name[100];

        if(is_send_thread_running==1 || is_receive_thread_running==1)  //线程正在运行,不能修改配置
                return;

        TabControl1->Visible=true;

        //读配置文件
        memset(comm,0,100);
        memset(bite_rate,0,100);
        getcwd(full_file_name, 100);
        memset(recv_comm,0,100);
        memset(recv_bite_rate,0,100);
        strcat(full_file_name,"\\sms.ini");
        if( GetCfgItem(full_file_name,"send_sms","comm",comm)!=0
          ||GetCfgItem(full_file_name,"send_sms","bite_rate",bite_rate)!=0
          ||GetCfgItem(full_file_name,"send_sms","sms_center",sms_center)!=0
          ||GetCfgItem(full_file_name,"receive_sms","comm",recv_comm)!=0
          ||GetCfgItem(full_file_name,"receive_sms","bite_rate",recv_bite_rate)!=0 )

        {
                sprintf(tmp,"读配置文件  %s  错误!!",full_file_name);
                //Form1->Memo1->Lines->Add(tmp);
                Form1->StatusBar1->Panels->Items[0]->Text=tmp;
                TabControl1->Visible=false;
                return;
        }

        ComboBox1->Text=comm;
        ComboBox2->Text=bite_rate;
        Edit3->Text=sms_center;
        ComboBox3->Text=recv_comm;
        ComboBox4->Text=recv_bite_rate;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button5Click(TObject *Sender)
{
        TabControl1->Visible=false;         
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{
        char tmp[100],full_file_name[100];
        int ModifyCfgItem(char *cfg_file,char *cfg_seg, char *cfg_item, char *value);
        char *alltrim(char *str);
        
        getcwd(full_file_name, 100);
        strcat(full_file_name,"\\sms.ini");

       if( ModifyCfgItem(full_file_name,"send_sms","comm",ComboBox1->Text.c_str())!=0
         ||ModifyCfgItem(full_file_name,"send_sms","bite_rate",ComboBox2->Text.c_str())!=0
         ||ModifyCfgItem(full_file_name,"send_sms","sms_center",Edit3->Text.c_str())!=0
         ||ModifyCfgItem(full_file_name,"receive_sms","comm",ComboBox3->Text.c_str())!=0
         ||ModifyCfgItem(full_file_name,"receive_sms","bite_rate",ComboBox4->Text.c_str())!=0 )
       {
                sprintf(tmp,"修改配置文件  %s  错误!!",full_file_name);
                Form1->StatusBar1->Panels->Items[0]->Text=tmp;
                TabControl1->Visible=false;
                return;
       }
       else
       {
                sprintf(tmp,"修改配置文件  %s 成功!!",full_file_name);
                //Form1->Memo1->Lines->Add(tmp);
                Form1->StatusBar1->Panels->Items[0]->Text=tmp;
                TabControl1->Visible=false;
                return;
       }
}
//---------------------------------------------------------------------------



//启动发送短信线程
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        char tmp[100];
        int get_systime1(char *bgntime);

        //判断该软件是否已授权使用(未授权只能试用30天)
        {
                //1、授权信息置于文件sms.permit中的第20个字节,
                //   若为‘1’则表示已授权,否则为试用软件。
                //2、第30个字节若为‘0’,则表示第一次使用
                //3、若第50个字节为‘1’,则用户无权用该软件
                //4、起始日期置于文件sms.permit的第100-107字节中

                FILE * fp;
                char full_file_name[100];
                char buff[1024];

                memset(full_file_name, 0, sizeof(full_file_name));
                getcwd(full_file_name, 100);
                strcat(full_file_name,"\\sms.permit");
                if( (fp=fopen(full_file_name, "r+"))==NULL ){
                         ShowMessage(AnsiString("软件未授权!请与作者联系:13607713833  谷先生。"));
                         return;
                }

                fread(buff,1024,1,fp);
                if( buff[19]!='1' ){//试用软件,判断使用时间是否超限
                        if( buff[49]=='1' ){//无权使用
                                ShowMessage(AnsiString("软件未授权!请与作者联系:13607713833  谷先生。"));
                                return;
                        }

                        //若第一次使用,记开始使用日期
                        if( buff[29]=='0' ){
                                char date[100],full_file_name1[100];
                                FILE * fp1;

                                buff[29]='1';
                                get_systime1(date);
                                date[8]='\0';
                                memcpy(buff+99, date, 8);

                                memset(full_file_name1, 0, sizeof(full_file_name1));
                                getcwd(full_file_name1, 100);
                                strcat(full_file_name1,"\\~sms.permit.bak");
                                fp1=fopen(full_file_name1,"w+");
                                fwrite(buff, sizeof(buff), 1, fp1);

                                fclose(fp1);fclose(fp);
                                DeleteFile(full_file_name);
                                MoveFile(full_file_name1,full_file_name);

                                ShowMessage(AnsiString("还可以使用30天。请与作者联系:13607713833  谷先生。") );
                        }
                        else{  //判断使用时间
                                char date[8],now[100];
                                int dif(char *now, char *date);
                                int k;

                                memset(date, 0, sizeof(date));
                                memcpy(date, buff+99, 8);
                                get_systime1(now);now[8]='\0';
                                if(   atoi(now)<atoi(date)
                                    ||(k=dif(now, date))>30
                                   ){
                                        ShowMessage(AnsiString("已超过使用期限!请与作者联系:13607713833  谷先生。"));

                                        //标记该软件为“不允许使用”
                                        {
                                        char full_file_name1[100];
                                        FILE * fp1;
                                        buff[49]='1';
                                        memset(full_file_name1, 0, sizeof(full_file_name1));
                                        getcwd(full_file_name1, 100);
                                        strcat(full_file_name1,"\\~sms.permit.bak");
                                        fp1=fopen(full_file_name1,"w+");
                                        fwrite(buff, sizeof(buff), 1, fp1);

                                        fclose(fp1);fclose(fp);
                                        DeleteFile(full_file_name);
                                        MoveFile(full_file_name1,full_file_name);
                                        }
                                        return;
                                }
                                fclose(fp);
                                ShowMessage( AnsiString("还能用")+AnsiString(30-k)+AnsiString("天,请与作者联系注册码:13607713833 谷先生。"));
                        }
                }

        }//end of 判断授权


        //2010年后不能用
        {
        char year[100];
        memset(year, 0, sizeof(year));
        get_systime1(year);
        year[4]='\0';

        if( atol(year)>=2010 )
                return;
        }

        sprintf(tmp, "%s", "收发线程正在启动......");
        Form1->StatusBar1->Panels->Items[0]->Text=tmp;


        Timer1->Interval=2000;  //扫描线程状态间隔时间
        send_thread_stop=0;     //0不停止线程  1停止线程
        receive_thread_stop=0;

        if( is_send_thread_running==0 ){
                mySendSmsThread=new SendSmsThread(false);
                mySendSmsThread->FreeOnTerminate=true;    //线程结束,释放资源
        }

        if( is_receive_thread_running==0 ){
                myReceiveSmsThread=new ReciveSmsThread(false);
                myReceiveSmsThread->FreeOnTerminate=true;    //线程结束,释放资源
        }
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------


void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
        if( send_thread_stop==1 && receive_thread_stop==1 ){      //按停止按钮
                Form1->StatusBar1->Panels->Items[0]->Text="接收线程终止!发送线程终止!";
                return;
        }
        
        //显示线程启动情况
        if( is_send_thread_running==1 && is_receive_thread_running==1){
                Form1->StatusBar1->Panels->Items[0]->Text="接收线程正在运行......,发送线程正在运行......";
                return;
        }
        else
        if( is_send_thread_running==1 && is_receive_thread_running==0){
                Form1->StatusBar1->Panels->Items[0]->Text="接收线程终止!发送线程正在运行......";
                return;
        }else
        if( is_send_thread_running==0 && is_receive_thread_running==1){
                Form1->StatusBar1->Panels->Items[0]->Text="发送线程终止!接收线程正在运行......";
                return;
        }else
        {
                Form1->StatusBar1->Panels->Items[0]->Text="短信接收线程终止!发送线程终止!请检查手机和电脑的连接";
                return;
        }

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)
{
        Timer1->Interval=0;
        Form1->StatusBar1->Panels->Items[0]->Text="短信收发线程未启动";    
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
        send_thread_stop=1;
        receive_thread_stop=1;
}

//---------------------------------------------------------------------------
int dif(char *now, char *date)
{
        char y1[5],y2[5],m1[3],m2[3],d1[3],d2[3];

        memset(y1,0, sizeof(y1)); memset(y2,0, sizeof(y2));
        memset(m1,0, sizeof(m1)); memset(m2,0, sizeof(m2));
        memset(d1,0, sizeof(d1)); memset(d2,0, sizeof(d2));
        
        memcpy(y1, now,   4);
        memcpy(m1, now+4, 2);
        memcpy(d1, now+6, 2);

        memcpy(y2, date,   4);
        memcpy(m2, date+4, 2);
        memcpy(d2, date+6, 2);

        return( (atoi(y1)*365+atoi(m1)*30+atoi(d1))-(atoi(y2)*365+atoi(m2)*30+atoi(d2)) ); 
}

void __fastcall TForm1::Button6Click(TObject *Sender)
{
        Application->HelpCommand(HELP_CONTENTS,0);
}
//---------------------------------------------------------------------------






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -