📄 main.pas
字号:
{
NtMsg Write by ZHONG WAN at 2003.10 Ver 0.02
-'`"_ -'`" \
/ \ / "
/ /\\__ / ___ \ 广州花都
| | \ -"`.-( \ |
| | | | \" | | 万 重
| / / "-" \ \ |
\___/ / (o o) \ (__/ 电邮(email):
__| _ _ |__ mantousoft@163.com
( ( ) )
\_\.-.___.-./_/ 网址(homepage):
__ | | __ http://www.delphibox.com
| \.| |./ |
| '#. .#' | OICQ: 6036742
|__/ '"" \__|
-/ \- 2003.10.10
}
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 + -