📄 sms_unit1.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 + -