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

📄 main.~pas

📁 用delphi开发的短信息预警系统
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
i:integer;
begin
//=====显示系统时间==============================
  StatusBar1.Panels[2].Text:=' '+formatdatetime('yyyy-mm-dd hh:mm:ss',now);
//=====读数据库,是否有短信要发送======================
  Timer2.Enabled:=False;
  WaitSMSQuery.SQL.Clear;
  WaitSMSQuery.SQL.Add('select * from waitsms');
  WaitSMSQuery.Open;
  if WaitSMSQuery.RecordCount >0 then
  begin
    WaitSMSQuery.First;
    for i:=0 to WaitSMSQuery.RecordCount-1 do
    begin
      with form1.WaitSMSListView do
      begin
        Items.Add;
        Items.Item[Items.Count-1].Caption:=trim(WaitSMSQuery.Fieldbyname('G_CONTENT').Value);
        Items.Item[Items.Count-1].SubItems.Add('');
        Items.Item[Items.Count-1].SubItems.Add(trim(WaitSMSQuery.Fieldbyname('G_NUMBER').Value));
        Items.Item[Items.Count-1].SubItems.Add('');
        WaitSMSQuery.Edit;
        WaitSMSQuery.Delete;
        WaitSMSQuery.Next;
      end;
    end;
    SendSMS();
  end;
  WaitSMSQuery.Close;
  Timer2.Enabled:=True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Application.MessageBox('可能还有未处理的短信,退出程序将丢失部分信息,您真的决定退出程序?','提示',MB_OKCANCEL)=ID_CANCEL then
Action:=canone;
end;
//==========待发信息右键菜单===========================
procedure TForm1.WaitSMSListViewMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  i:integer;   mousepos:TPoint;
begin
  for i:=0 to WaitSMSListView.Items.Count-1 do
  begin
    if WaitSMSListView.Items.Item[i].Selected and (Button=mbRight)then
    begin
      WaitId:=i;
      GetCursorPos(mousepos); //获取鼠标位置
      WaitPopupMenu.Popup(mousepos.X, mousepos.Y); // 弹出菜单;
      break;
    end;
  end;
end;
//==========收件箱右键菜单===========================
procedure TForm1.InSMSListViewMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  i:integer;   mousepos:TPoint;
begin
  for i:=0 to InSMSListView.Items.Count-1 do
  begin
    if InSMSListView.Items.Item[i].Selected and (Button=mbRight)then
    begin
      WaitId:=i;
      GetCursorPos(mousepos); //获取鼠标位置
      InPopupMenu.Popup(mousepos.X, mousepos.Y); // 弹出菜单;
      break;
    end;
  end;
end;
//==========未发信息右键菜单===========================
procedure TForm1.UnSendSMSListViewMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  i:integer;   mousepos:TPoint;
begin
  for i:=0 to UnSendSMSListView.Items.Count-1 do
  begin
    if UnSendSMSListView.Items.Item[i].Selected and (Button=mbRight)then
    begin
      WaitId:=i;
      GetCursorPos(mousepos); //获取鼠标位置
      UnPopupMenu.Popup(mousepos.X, mousepos.Y); // 弹出菜单;
      break;
    end;
  end;
end;
//========按下发送键发送=====================================
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
  if not ModuleStatus[ComboBox1.ItemIndex] then
  begin
    StatusBar1.Panels[0].Text:='模块未打开';
  end else
  begin
    if WaitSMSListView.Items.Count=0 then showmessage('没有可发送的信息!') else
    begin
      StatusBar1.Panels[3].Text:='';
      SendSMS();
    end;
  end;
end;
//=========发送程序===========================================
procedure TForm1.SendSMS();
var
  UnSendMsg:pchar;
  ChOrEh:boolean;
begin
  ProgressBar1.Max:=WaitSMSListView.Items.Count;
  ProgressBar1.Step:=1;
  ProgressBar1.Position:=0;
  StopSend:=false;
  BitBtn5.Enabled:=true;
  BitBtn4.Enabled:=false;
  Button1.Enabled:=false;
  S2.Enabled:=false;
  N2.Enabled:=false;
  Timer1.Enabled:=false;
  Timer2.Enabled:=false;
  GetMem(UnSendMsg,200);
  if SMSLength=70 then ChOrEh:=true
  else ChOrEh:=false;
  repeat
    SendMsg(ComboBox1.ItemIndex+1,
            Pchar(WaitSMSListView.Items.Item[WaitSMSListView.Items.Count-1].Caption),
            Pchar(WaitSMSListView.Items.Item[WaitSMSListView.Items.Count-1].SubItems.Strings[1]),
            1,ChOrEh);
    repeat
      Application.ProcessMessages;//中断响应
      StatusBar1.Panels[1].Text:=' 正在发送...';
    until not GetNextSendMsg(ComboBox1.ItemIndex+1,UnSendMsg,false);//重复执行,直到该语句为真
    //=====进度条显示================================
    ProgressBar1.StepIt;
    StatusBar1.Panels[3].Text:=' 已完成'+FormatFloat('0',(ProgressBar1.Position/ProgressBar1.Max)*100)+'%';
    WaitSMSListView.Items.Delete(WaitSMSListView.Items.Count-1);
  until ((WaitSMSListView.Items.Count=0) or StopSend);//重复执行,直到该语句为真
  if StopSend then
    StatusBar1.Panels[1].Text:=' 发送停止'
  else
    StatusBar1.Panels[1].Text:=' 发送完毕';
  FreeMem(UnSendMsg);
  BitBtn5.Enabled:=false;
  BitBtn4.Enabled:=true;
  Button1.Enabled:=true;
  N2.Enabled:=true;
  S2.Enabled:=true;
  Timer1.Enabled:=true;
  Timer2.Enabled:=true;
end;

procedure TForm1.SendSMSOnce(Msg,MobileNo:string);
var
  UnSendMsg:pchar;
  ChOrEh:boolean;
begin
    ProgressBar1.Max:=1;
    ProgressBar1.Step:=1;
    ProgressBar1.Position:=0;
    StopSend:=false;
    BitBtn5.Enabled:=true;
    BitBtn4.Enabled:=false;
    Button1.Enabled:=false;
    N2.Enabled:=false;
    S2.Enabled:=false;
    Timer1.Enabled:=false;
    Timer2.Enabled:=false;
    GetMem(UnSendMsg,200);
    if SMSLength=70 then ChOrEh:=true
    else ChOrEh:=false;
    SendMsg(ComboBox1.ItemIndex+1,Pchar(Msg),Pchar(MobileNo),1,ChOrEh);
    repeat
      Application.ProcessMessages;//中断响应
      StatusBar1.Panels[1].Text:=' 正在发送...';
    until not GetNextSendMsg(ComboBox1.ItemIndex+1,UnSendMsg,false);//重复执行,直到该语句为真
    //=====进度条显示================================
    ProgressBar1.StepIt;
    StatusBar1.Panels[1].Text:=' 发送完毕';
    StatusBar1.Panels[3].Text:=' 完成';
    FreeMem(UnSendMsg);
    BitBtn5.Enabled:=false;
    BitBtn4.Enabled:=true;
    Button1.Enabled:=true;
    N2.Enabled:=true;
    S2.Enabled:=true;
    Timer1.Enabled:=true;
    Timer2.Enabled:=true;
end;
//======停止键按下============================
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
  StopSend:=true;
  BitBtn5.Enabled:=false;
  StatusBar1.Panels[1].Text:=' 正在停止发送...';
end;
//========待发信息右键菜单发送===================
procedure TForm1.N2Click(Sender: TObject);
begin
  if not ModuleStatus[ComboBox1.ItemIndex] then
  begin
    StatusBar1.Panels[0].Text:='模块未打开';
  end else
  begin
    SendSMSOnce(WaitSMSListView.Items.Item[WaitId].Caption,
                WaitSMSListView.Items.Item[WaitId].SubItems.Strings[1]);
    WaitSMSListView.Items.Delete(WaitId);
  end;
end;
//========待发信息右键菜单删除===================
procedure TForm1.N4Click(Sender: TObject);
begin
  WaitSMSListView.Items.Delete(WaitId);
end;
//========待发信息右键菜单全部删除===================
procedure TForm1.N5Click(Sender: TObject);
begin
  WaitSMSListView.Clear;
end;
//========未发信息右键菜单删除===================
procedure TForm1.D2Click(Sender: TObject);
begin
  UnSendSMSListView.Items.Delete(WaitId);
end;
//========未发信息右键菜单全部删除===================
procedure TForm1.N12Click(Sender: TObject);
begin
  UnSendSMSListView.Clear;
end;
//========未发信息右键菜单发送===================
procedure TForm1.S2Click(Sender: TObject);
begin
  if not ModuleStatus[ComboBox1.ItemIndex] then
  begin
    StatusBar1.Panels[0].Text:='模块未打开';
  end else
  begin
    SendSMSOnce(UnSendSMSListView.Items.Item[WaitId].Caption,
                UnSendSMSListView.Items.Item[WaitId].SubItems.Strings[1]);
    UnSendSMSListView.Items.Delete(WaitId);
  end;
end;
           
procedure TForm1.N9Click(Sender: TObject);
begin
  ADOTable_Edit.TableName:='insms';
  ADOTable_Edit.Active:=true;
  ADOTable_Edit.Locate('G_time',InSMSListView.Items.Item[WaitId].SubItems.Strings[1],[]);
  ADOTable_Edit.Edit;
  ADOTable_Edit.Delete;
  ADOTable_Edit.Active:=false;
  InSMSFromSQL('1'); //读取信息
end;

procedure TForm1.N10Click(Sender: TObject);
begin
  with Form1.ADOCommand_ADD do
  begin
    try
    Parameters.Clear;
    CommandText:='delete from insms';
    Execute;
    except
    end;
  end;
  InSMSFromSQL('1'); //读取信息
end;

procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
  sendcontent:='';
  if treeview1.Selected.Level<>1 then exit;
  sendcontent:=TreeView1.Selected.Text;
  Form2.ShowModal;
end;

procedure TForm1.WMNID(var msg:TMessage);
begin
  case msg.LParam of
    WM_LBUTTONDBLCLK:
    begin
      Form1.Visible:=true;
      //Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 显示主窗体后删除托盘区的图标
      SetWindowPos(Application.Handle, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW);
    end;
    //WM_RBUTTONUP: ShowMessage('您点击的是右键');
  end;

End;

procedure TForm1.SysCommand(var SysMsg: TMessage);
begin
  case SysMsg.WParam of
    SC_MINIMIZE:
    begin
      Form1.Visible:=false;
      SetWindowPos(Application.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_HIDEWINDOW);
      Hide; // 在任务栏隐藏程序
    end;
  else
    inherited;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Shell_NotifyIcon(NIM_DELETE,@NotifyIcon);
end;

procedure TForm1.N7Click(Sender: TObject);
begin
  if Application.MessageBox('可能还有未处理的短信,退出程序将丢失部分信息,您真的决定退出程序?','提示',MB_OKCANCEL)=ID_OK then
  Application.Terminate;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Form4.Show;
end;

end.

⌨️ 快捷键说明

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