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

📄 delphi network using courier services.txt

📁 利用delphi软件实现网络信使服务
💻 TXT
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    procedure Memo1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
  private
    function NetSend: integer; overload; //函数重载
    function NetSend(msgname, fromname, buf: string): integer; overload;
    { Private declarations }
  public
    { Public declarations }
  end;

function NetMessageBufferSend(servername: PWideChar;
  msgname: PWideChar;
  fromname: PWideChar;
  buf: PWideChar;
  var buflen: integer): integer; cdecl;

var
  Form1: TForm1;

implementation

function NetMessageBufferSend; external 'netapi32.dll' name 'NetMessageBufferSend';

{$R *.dfm}

function TForm1.NetSend(msgname, fromname, buf: string): integer;
const
  lname = 64; //地址、发送人字符串的长度
  lbuf = 1024; //内容的长度
var
  i: integer;
  msgname_, fromname_: array[0..lname - 1] of WideChar;
  buf_: array[0..lbuf - 1] of WideChar;
  buflen_: integer;
begin
  //初始化全部填充#0字符
  for i := 0 to lname - 1 do msgname_[i] := #0;
  //字符串类型转换
  StringToWideChar(msgname, msgname_, lname);
  for i := 0 to lname - 1 do fromname_[i] := #0;
  StringToWideChar(fromname, fromname_, lname);
  for i := 0 to lbuf - 1 do buf_[i] := #0;
  StringToWideChar(buf, buf_, lbuf);
  //调用NetMessageBufferSend()发送信息
  Result := NetMessageBufferSend(nil, msgname_, fromname_, buf_, buflen_);
end;

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (shift = ([ssCtrl])) and (key = 13) then
  begin
    Button1.Click; //Ctrl+回车等同于按钮1按下
  end;
end;

function TForm1.NetSend: integer;
begin
  Result := NetSend(Edit1.Text, Edit2.Text, Memo1.Text);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  iRet: integer;
begin
  if (Edit1.Text = '') or (Memo1.Text = '') then
  begin
    StatusBar1.SimpleText := '地址或内容为空,发送失败.';
    Exit;
  end;

  Button1.Enabled := False;
  StatusBar1.SimpleText := '正在发送...';

  iRet := NetSend; //开始发送,这里的NetSend函数没有带参数,因而系统自动调用没有参数的那个NetSend函数,这就是函数重载的作用。
  if iRet = 0 then //返回信息
    StatusBar1.SimpleText := '消息发送成功!'
  else
    StatusBar1.SimpleText := Format('消息发送失败,错误代码:%d.', [iRet]);

  Button1.Enabled := True;
end;

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

procedure TForm1.Memo1Change(Sender: TObject);
var
  i: integer;
begin
  i := Length(Memo1.Text); //统计字数,即返回Memo1中的字符串长度
  Label4.Caption := Format('字数(%d)', [i]);
end;

end.

⌨️ 快捷键说明

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