Delphi笔记整理(二)

来源:互联网 发布:icloud怎么看备份数据 编辑:程序博客网 时间:2024/04/29 19:14

[DELPHI]字符的加密与解密 

function cryptstr(const s:string; stype: dword):string;

var

i: integer;

fkey: integer;

begin

result:='';

case stype of

0: setpass;

begin

randomize;

fkey := random($ff);

for i:=1 to length(s) do

result := result+chr( ord(s[i]) xor i xor fkey);

result := result + char(fkey);

end;

1: getpass

begin

fkey := ord(s[length(s)]);

for i:=1 to length(s) - 1 do

result := result+chr( ord(s[i]) xor i xor fkey);

end;

end;

□◇[DELPHI]向其他应用程序发送模拟键

var

h: THandle;

begin

h := FindWindow(nil, '应用程序标题');

PostMessage(h, WM_KEYDOWN, VK_F9, 0);//发送F9键

end;

 

□◇[DELPHI]得到图像上某一点的RGB

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

red,green,blue:byte ;

i:integer;

begin

i:= image1.Canvas.Pixels[x,y];

Blue:= GetBValue(i);

Green:= GetGValue(i): 

Red:= GetRValue(i); 

Label1.Caption:=inttostr(Red);

Label2.Caption:=inttostr(Green);

Label3.Caption:=inttostr(Blue);

end;

□◇[DELPHI]关于日期格式分解转换

var year,month,day:word;now2:Tdatatime;

now2:=date();

decodedate(now2,year,month,day);

lable1.Text :=inttostr(year)+'年'+inttostr(month)+'月'+inttostr(day)+'日'; 

[DELPHI]如何判断当前网络连接方式

判断结果是MODEM、局域网或是代理服务器方式。

uses wininet; 

Function ConnectionKind :boolean; 

var flags: dword; 

begin 

Result := InternetGetConnectedState(@flags, 0); 

if Result then 

begin 

if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then 

begin 

showmessage('Modem'); 

end; 

if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then 

begin 

showmessage('LAN'); 

end; 

if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then 

begin 

showmessage('Proxy'); 

end; 

if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then 

begin 

showmessage('Modem Busy'); 

end; 

end; 

end; 

[DELPHI]如何判断字符串是否是有效EMAIL地址

function IsEMail(EMail: String): Boolean; 

var s: String;ETpos: Integer; 

begin 

ETpos:= pos('@', EMail); 

if ETpos > 1 then 

begin 

s:= copy(EMail,ETpos+1,Length(EMail)); 

if (pos('.', s) > 1) and (pos('.', s) < length(s)) then 

Result:= true else Result:= false; 

end 

else 

Result:= false; 

end; 

[DELPHI]判断系统是否连接INTERNET

需要引入URL.DLL中的InetIsOffline函数。 

函数申明为:

function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL'; 

然后就可以调用函数判断系统是否连接到INTERNET

if InetIsOffline(0) then ShowMessage('not connected!') 

else ShowMessage('connected!'); 

该函数返回TRUE如果本地系统没有连接到INTERNET。

附:

大多数装有IE或OFFICE97的系统都有此DLL可供调用。

InetIsOffline

BOOL InetIsOffline(

DWORD dwFlags, 

);

[DELPHI]简单地播放和暂停WAV文件

uses mmsystem;

function PlayWav(const FileName: string): Boolean; 

begin 

Result := PlaySound(PChar(FileName), 0, SND_ASYNC); 

end; 

procedure StopWav; 

var 

buffer: array[0..2] of char; 

begin 

buffer[0] := #0; 

PlaySound(Buffer, 0, SND_PURGE); 

end; 

[DELPHI]取机器BIOS信息

with Memo1.Lines do 

begin 

Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061)))); 

Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091)))); 

Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5)))); 

Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71)))); 

end; 

[DELPHI]网络下载文件

uses UrlMon;

function DownloadFile(Source, Dest: string): Boolean; 

begin 

try 

Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0; 

except 

Result := False; 

end; 

end; 

if DownloadFile('http://www.borland.com/delphi6.zip, 'c:\kylix.zip') then 

ShowMessage('Download succesful') 

else ShowMessage('Download unsuccesful') 

[DELPHI]解析服务器IP地址

uses winsock 

function IPAddrToName(IPAddr : String): String; 

var 

SockAddrIn: TSockAddrIn; 

HostEnt: PHostEnt; 

WSAData: TWSAData; 

begin 

WSAStartup($101, WSAData); 

SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr)); 

HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); 

if HostEnt<>nil then result:=StrPas(Hostent^.h_name) else result:=''; 

end; 

[DELPHI]取得快捷方式中的连接

function ExeFromLink(const linkname: string): string; 

var 

FDir, 

FName, 

ExeName: PChar; 

z: integer; 

begin 

ExeName:= StrAlloc(MAX_PATH); 

FName:= StrAlloc(MAX_PATH); 

FDir:= StrAlloc(MAX_PATH); 

StrPCopy(FName, ExtractFileName(linkname)); 

StrPCopy(FDir, ExtractFilePath(linkname)); 

z:= FindExecutable(FName, FDir, ExeName); 

if z > 32 then 

Result:= StrPas(ExeName) 

else 

Result:= ''; 

StrDispose(FDir); 

StrDispose(FName); 

StrDispose(ExeName); 

end; 

[DELPHI]控制TCombobox的自动完成

{'Sorted' property of the TCombobox to true } 

var lastKey: Word; //全局变量

//TCombobox的OnChange事件 

procedure TForm1.AutoCompleteChange(Sender: TObject); 

var 

SearchStr: string; 

retVal: integer; 

begin 

SearchStr := (Sender as TCombobox).Text; 

if lastKey <> VK_BACK then // backspace: VK_BACK or $08 

begin 

retVal := (Sender as TCombobox).Perform(CB_FINDSTRING, -1, LongInt(PChar(SearchStr))); 

if retVal > CB_Err then 

begin 

(Sender as TCombobox).ItemIndex := retVal; 

(Sender as TCombobox).SelStart := Length(SearchStr); 

(Sender as TCombobox).SelLength := 

(Length((Sender as TCombobox).Text) - Length(SearchStr)); 

end; // retVal > CB_Err 

end; // lastKey <> VK_BACK 

lastKey := 0; // reset lastKey 

end; 

//TCombobox的OnKeyDown事件

procedure TForm1.AutoCompleteKeyDown(Sender: TObject; var Key: Word; 

Shift: TShiftState); 

begin 

lastKey := Key; 

end; 

[DELPHI]如何清空一个目录 

function EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :

Boolean;

var

SearchRec : TSearchRec;

Res : Integer;

begin

Result := False;

TheDirectory := NormalDir(TheDirectory);

Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);

try

while Res = 0 do

begin

if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then

begin

if ((SearchRec.Attr and faDirectory) > 0) and Recursive

then begin

EmptyDirectory(TheDirectory + SearchRec.Name, True);

RemoveDirectory(PChar(TheDirectory + SearchRec.Name));

end

else begin

DeleteFile(PChar(TheDirectory + SearchRec.Name))

end;

end;

Res := FindNext(SearchRec);

end;

Result := True;

finally

FindClose(SearchRec.FindHandle);

end;

end;

[DELPHI]如何计算一个目录的大小 

function GetDirectorySize(const ADirectory: string): Integer;

var

Dir: TSearchRec;

Ret: integer;

Path: string;

begin

Result := 0;

Path := ExtractFilePath(ADirectory);

Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);

if Ret <> NO_ERROR then exit;

try

while ret=NO_ERROR do

begin

inc(Result, Dir.Size);

if (Dir.Attr in [faDirectory]) and (Dir.Name[1] <> '.') then

Inc(Result, GetDirectorySize(Path + Dir.Name + '\*.*'));

Ret := Sysutils.FindNext(Dir);

end;

finally

Sysutils.FindClose(Dir);

end;

end;

[DELPHI]安装程序如何添加到Uninstall列表

操作注册表,如下:

1.在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall键下建立一个主键,名

称任意。

例HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyUninstall

2.在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyUnistall下键两个串值

这两个串值的名称是特定的:DisplayName和UninstallString。

3.给串DisplayName赋值为显示在“删除应用程序列表”中的名称,如'Aiming Uninstall one';

给串UninstallString赋值为执行的删除命令,如 C:\WIN97\uninst.exe -f"C:\TestPro\aimTest.isu"

◇[DELPHI]截获WM_QUERYENDSESSION关机消息

type

TForm1 = class(TForm)

procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;

procedure CMEraseBkgnd(var Message:TWMEraseBkgnd);Message WM_ERASEBKGND;

private

{ Private declarations }

public

{ Public declarations }

end;

procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);

begin

Showmessage('computer is about to shut down');

end;

[DELPHI]获取网上邻居

procedure getnethood();//NT做服务器,WIN98上调试通过。

var

a,i:integer;

errcode:integer;

netres:array[0..1023] of netresource;

enumhandle:thandle;

enumentries:dword;

buffersize:dword;

s:string;

mylistitems:tlistitems;

mylistitem:tlistitem;

alldomain:tstrings;

begin //listcomputer is a listview to list all computers;controlcenter is a form.

alldomain:=tstringlist.Create ;

with netres[0] do begin

dwscope :=RESOURCE_GLOBALNET;

dwtype :=RESOURCETYPE_ANY;

dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;

dwusage :=RESOURCEUSAGE_CONTAINER;

lplocalname :=nil;

lpremotename :=nil;

lpcomment :=nil;

lpprovider :=nil;

end; // 获取所有的域

errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@

netres[0],enumhandle);

if errcode=NO_ERROR then begin

enumentries:=1024;

buffersize:=sizeof(netres);

errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);

end;

a:=0;

mylistitems :=controlcenter.lstcomputer.Items ;

mylistitems.Clear ;

while (string(netres[a].lpprovider)<>'') and (errcode=NO_ERROR) do

begin

alldomain.Add (netres[a].lpremotename);

a:=a+1;

end;

wnetcloseenum(enumhandle);

// 获取所有的计算机

mylistitems :=controlcenter.lstcomputer.Items ;

mylistitems.Clear ;

for i:=0 to alldomain.Count-1 do

begin

with netres[0] do begin

dwscope :=RESOURCE_GLOBALNET;

dwtype :=RESOURCETYPE_ANY;

dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;

dwusage :=RESOURCEUSAGE_CONTAINER;

lplocalname :=nil;

lpremotename :=pchar(alldomain[i]);

lpcomment :=nil;

lpprovider :=nil;

end;

ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,

@netres[0],EnumHandle);

if errcode=NO_ERROR then

begin

EnumEntries:=1024;

BufferSize:=SizeOf(NetRes);

ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);

end;

a:=0;

while (string(netres[a].lpprovider)<>'') and (errcode=NO_ERROR) do

begin

mylistitem :=mylistitems.Add ;

mylistitem.ImageIndex :=0;

mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'\\','',[rfReplaceAll]));

a:=a+1;

end;

wnetcloseenum(enumhandle);

end;

end;

[DELPHI]获取某一计算机上的共享目录

procedure getsharefolder(const computername:string);

var

errcode,a:integer;

netres:array[0..1023] of netresource;

enumhandle:thandle;

enumentries,buffersize:dword;

s:string;

mylistitems:tlistitems;

mylistitem:tlistitem;

mystrings:tstringlist;

begin

with netres[0] do begin

dwscope :=RESOURCE_GLOBALNET;

dwtype :=RESOURCETYPE_DISK;

dwdisplaytype :=RESOURCEDISPLAYTYPE_SHARE;

dwusage :=RESOURCEUSAGE_CONTAINER;

lplocalname :=nil;

lpremotename :=pchar(computername);

lpcomment :=nil;

lpprovider :=nil;

end; // 获取根结点

errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,

@netres[0],enumhandle);

if errcode=NO_ERROR then

begin

EnumEntries:=1024;

BufferSize:=SizeOf(NetRes);

ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);

end;

wnetcloseenum(enumhandle);

a:=0;

mylistitems:=controlcenter.lstfile.Items ;

mylistitems.Clear ;

while (string(netres[a].lpprovider)<>'') and (errcode=NO_ERROR) do

begin

with mylistitems do

begin

mylistitem:=add;

mylistitem.ImageIndex :=4;

mylistitem.Caption :=extractfilename(netres[a].lpremotename);

end;

a:=a+1;

end;

end;

[DELPHI]得到硬盘序列号

var SerialNum : pdword; a, b : dword; Buffer : array [0..255] of char; 

begin 

if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then Label1.Caption := 

IntToStr(SerialNum^); 

end; 

[DELPHI]MEMO的自动翻页

Procedure ScrollMemo(Memo : TMemo; Direction : char); 

begin 

case direction of 

'd': begin 

SendMessage(Memo.Handle, { HWND of the Memo Control } 

WM_VSCROLL, { Windows Message } 

SB_PAGEDOWN, { Scroll Command } 

0) { Not Used } 

end; 

'u' : begin 

SendMessage(Memo.Handle, { HWND of the Memo Control } 

WM_VSCROLL, { Windows Message } 

SB_PAGEUP, { Scroll Command } 

0); { Not Used } 

end; 

end; 

end; 

procedure TForm1.Button1Click(Sender: TObject); 

begin 

ScrollMemo(Memo1,'d'); //上翻页

end; 

procedure TForm1.Button1Click(Sender: TObject); 

begin 

ScrollMemo(Memo1,'u'); //下翻页

end; 

[DELPHI]DBGrid中回车到下个位置(Tab)

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if Key = #13 then

if DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 then

DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl

else

begin 

Table1.next;

DBGrid1.Columns[0].field.FocusControl;

end;

end;

[DELPHI]如何安装控件

安装方法:

1.对于单个控件,Component-->install component..-->PAS或DCU文件-->install

2.对于带*.dpk文件的控件包,File-->open(下拉列表框中选*.dpk)-->install即可.

3.对于带*.dpl文件的控件包,Install Packages-->Add-->dpl文件名即可。

4.如果以上Install按钮为失效的话,试试Compile按钮。

5.是run time lib则在option下的packages下的runtimepackes加之.

如果编译时提示文件找不到的话,一般是控件的安装目录不在delphi的Lib目录中,有两种方法可以解决:

1.把安装的原文件拷入到delphi的Lib目录下。

2.或者Tools-->Environment Options中把控件原代码路径加入到Delphi的Lib目录中即可。

[DELPHI]目录完全删除(deltree

procedure TForm1.DeleteDirectory(strDir:String); 

var 

sr: TSearchRec; 

FileAttrs: Integer; 

strfilename:string; 

strPth:string; 

begin 

strpth:=Getcurrentdir(); 

FileAttrs := faAnyFile; 

if FindFirst(strpth+'\'+strdir+'\*.*', FileAttrs, sr) = 0 then 

begin 

if (sr.Attr and FileAttrs) = sr.Attr then 

begin 

strfilename:=sr.Name; 

if fileexists(strpth+'\'+strdir+'\'+strfilename) then 

deletefile(strpth+'\'+strdir+'\'+strfilename); 

end; 

while FindNext(sr) = 0 do 

begin 

if (sr.Attr and FileAttrs) = sr.Attr then 

begin 

strfilename:=sr.name; 

if fileexists(strpth+'\'+strdir+'\'+strfilename) then 

deletefile(strpth+'\'+strdir+'\'+strfilename); 

end; 

end; 

FindClose(sr); 

removedir(strpth+'\'+strdir); 

end; 

end;

[DELPHI]取得TMemo 控件当前光标的行和列信息到Tpoint中 

1.function ReadCursorPos(SourceMemo: TMemo): TPoint; 

var Point: TPoint; 

begin 

 point.y := SendMessage(SourceMemo.Handle,EM_LINEFROMCHAR,SourceMemo.SelStart,0); 

 point.x := SourceMemo.SelStart-SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0); 

 Result := Point;

end; 

2.LineLength:=SendMessage(memol.handle,EM—LINELENGTH,Cpos,0);//行长

[DELPHI]读硬盘序列号 

function GetDiskSerial(DiskChar: Char): string;

var

SerialNum : pdword;

a, b : dword;

Buffer : array [0..255] of char;

begin

result := "";

if GetVolumeInformation(PChar(diskchar+":\"), Buffer, SizeOf(Buffer), SerialNum,

a, b, nil, 0) then

 Result := IntToStr(SerialNum^);

end;

[INTERNET]CSS常用综合技巧

1。P:first-letter { font-size: 300%; float: left }//首字会比普通字体加大三倍。

2。<LINK REL=StyleSheet HREF="basics.css" TITLE="Contemporary">//连接一个外部样式表

3。嵌入一个样式表

<STYLE TYPE="text/css" MEDIA=screen>

<!--

@import url(http://www.htmlhelp.com/style.css);//外部导入一个样式表

@import url(/stylesheets/punk.css);//同上

BODY { background: url(foo.gif) red; color: black }

.punk { color: lime; background: #ff80c0 }//引用见5。

#wdg97 { font-size: larger }//引用见6。

-->

</STYLE>

4。<P STYLE="color: red; font-family: 'New Century Schoolbook', serif"> //内联样式

<SPAN STYLE="font-family: Arial">Arial</SPAN>//SPAN接受STYLE、CLASS和ID属性

<DIV CLASS=note><P>DIV可以包含段落、标题、表格甚至其它部分</P></DIV>

5。<H1 CLASS=punk>CLASS属性</H1>//定义见3。

6。<P ID=wdg97>ID属性</P>//定义见3。

7。属性列表

字体风格:font-style: [normal | italic | oblique];

字体大小:font-size: [xx-small | x-small | small | medium | large | x-large | xx-large | larger | smaller | <长度> 

| <百分比>]

文本修饰:text-decoration:[ underline || overline || line-through || blink ]

文本转换:text-transform:[none | capitalize | uppercase | lowercase]

背景颜色:background-color:[<颜色> | transparent]

背景图象:background-image:[<URLs> | none]

行高:line-height: [normal | <数字> | <长度> | <百分比>]

边框样式:border-style: [ none | dotted | dashed | solid | double | groove | ridge | inset | outset ]

漂浮:float: [left | right | none]

8。长度单位

相对单位:

em (em,元素的字体的高度) 

ex (x-height,字母 "x" 的高度) 

px (像素,相对于屏幕的分辨率) 

绝对长度:

in (英寸,1英寸=2.54厘米) 

cm (厘米,1厘米=10毫米) 

mm (米) 

pt (点,1点=1/72英寸) 

pc (帕,1帕=12点) 

[DELPHI]VCL制作简要步骤

1.创建部件属性方法事件

(建立库单元,继承为新的类型,添加属性、方法、事件,注册部件,建立包文件)

2.消息处理

3.异常处理

4.部件可视

[DELPHI]动态连接库的装载

静态装载:procedure name;external 'lib.dll';

动态装载:var handle:Thandle;

handle:=loadlibrary('lib.dll');

if handle<>0 then

begin

{dosomething}

freelibrary(handle);

end;

[DELPHI]指针变量和地址

var x,y:integer;p:^integer;//指向INTEGER变量的指针

x:=10;//变量赋值

p:=@x;//变量x的地址

y:=p^;//为Y赋值指针P

@@procedure//返回过程变量的内存地址

[DELPHI]判断字符是汉字的一个字符

ByteType('你好haha吗',1) = mbLeadByte//是第一个字符

ByteType('你好haha吗',2) = mbTrailByte//是第二个字符

ByteType('你好haha吗',5) = mbSingleByte//不是中文字符

[DELPHI]memo的定位操作

memo1.lines.delete(0)//删除第1行

memo1.selstart:=10//定位10字节处

[DELPHI]获得双字节字符内码

function getit(s: string): integer;

begin

Result := byte(s[1]) * $100 + byte(s[2]);

end;

使用:getit('计')//$bcc6 即十进制 48326

[DELPHI]调用ADD数据存储过程

存储过程如下:

create procedure addrecord(

record1 varchar(10)

record2 varchar(20)

)

as

begin

insert into tablename (field1,field2) values(:record1,:record2)

end

执行存储过程:

EXECUTE procedure addrecord("urrecord1","urrecord2") 

[DELPHI]将文件存到blob字段中

function blobcontenttostring(const filename: string):string;

begin

with tfilestream.create(filename,fmopenread) do

try

setlength(Result,size);

read(Pointer(Result)^,size);

finally

free;

end;

end;

//保存字段

begin

if (opendialog1.execute) then

begin

sFileName:=OpenDialog1.FileName;

adotable1.edit;

adotable1.fieldbyname('visio').asstring:=Blobcontenttostring(FileName);

adotable1.post;

end;

[DELPHI]把文件全部复制到剪贴板

uses shlobj,activex,clipbrd;

procedure Tform1.copytoclipbrd(var FileName:string);

var

FE:TFormatEtc;

Medium: TStgMedium;

dropfiles:PDropFiles;

pFile:PChar;

begin

FE.cfFormat := CF_HDROP;

FE.dwAspect := DVASPECT_CONTENT;

FE.tymed := TYMED_HGLOBAL;

Medium.hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_ZEROINIT, SizeOf(TDropFiles)+length(FileName)+1);

if Medium.hGlobal<>0 then begin

Medium.tymed := TYMED_HGLOBAL;

dropfiles := GlobalLock(Medium.hGlobal);

try

dropfiles^.pfiles := SizeOf(TDropFiles);

dropfiles^.fwide := False;

longint(pFile) := longint(dropfiles)+SizeOf(TDropFiles);

StrPCopy(pFile,FileName);

Inc(pFile, Length(FileName)+1);

pFile^ := #0;

finally

GlobalUnlock(Medium.hGlobal);

end;

Clipboard.SetAsHandle(CF_HDROP,Medium.hGlobal);

end;

end;

[DELPHI]列举当前系统运行进程

uses TLHelp32;

procedure TForm1.Button1Click(Sender: TObject);

var lppe: TProcessEntry32;

found : boolean;

Hand : THandle;

begin

Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);

found := Process32First(Hand,lppe);

while found do

begin

ListBox1.Items.Add(StrPas(lppe.szExeFile));

found := Process32Next(Hand,lppe);

end;

end;

[DELPHI]根据BDETable1建立新表Table2

Table2:=TTable.Create(nil);

try

Table2.DatabaseName:=Table1.DatabaseName;

Table2.FieldDefs.Assign(Table1.FieldDefs);

Table2.IndexDefs.Assign(Table1.IndexDefs);

Table2.TableName:='new_table';

Table2.CreateTable();

finally

Table2.Free();

end;

[DELPHI]最菜理解DLL建立和引用

//先看DLL source(FILE-->NEW-->DLL)

library project1;

uses

SysUtils, Classes;

function addit(f:integer;s:integer):integer;export;

begin

makeasum:=f+s;

end;

exports

addit;

end.

//调用(IN ur PROJECT)

implementation

function addit(f:integer;s:integer):integer;far;external 'project1';//申明

{调用就是addit(2,4);结果显示6}

◇[DELPHI]动态读取程序自身大小

function GesSelfSize: integer;

var

f: file of byte;

begin

filemode := 0;

assignfile(f, application.exename);

reset(f);

Result := filesize(f);//单位是字节

closefile(f);

end;

[DELPHI]读取BIOS信息

with Memo1.Lines do 

begin 

Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061)))); 

Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091)))); 

Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5)))); 

Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71)))); 

end; 

[DELPHI]动态建立MSSQL别名

procedure TForm1.Button1Click(Sender: TObject);

var MyList: TStringList;

begin

MyList := TStringList.Create;

try

with MyList do

begin

Add('SERVER NAME=210.242.86.2');

Add('DATABASE NAME=db');

Add('USER NAME=sa');

end;

Session1.AddAlias('TESTSQL', 'MSSQL', MyList); //ミMSSQL

Session1.SaveConfigFile;

finally

MyList.Free;

Session1.Active:=True;

Database1.DatabaseName:='DB';

Database1.AliasName:='TESTSQL';

Database1.LoginPrompt:=False;

Database1.Params.Add('USER NAME=sa');

Database1.Params.Add('PASSWORD=');

Database1.Connected:=True;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Database1.Connected:=False;

Session1.DeleteAlias('TESTSQL'); 

end; 

[DELPHI]播放背景音乐

uses mmsystem

//播放音乐

MCISendString('OPEN e:\1.MID TYPE SEQUENCER ALIAS NN', '', 0, 0);

MCISendString('PLAY NN FROM 0', '', 0, 0);

MCISendString('CLOSE ANIMATION', '', 0, 0);

end;

//停止播放

MCISendString('OPEN e:\1.MID TYPE SEQUENCER ALIAS NN', '', 0, 0);

MCISendString('STOP NN', '', 0, 0);

MCISendString('CLOSE ANIMATION', '', 0, 0);

[DELPHI]接口和类的一个范例代码

Type{接口和类申明:区别在于不能在接口中申明数据成员、任何非公有的方法、公共方法不使用PUBLIC关键

字}

Isample=interface//定义Isample接口

function getstring:string;

end;

Tsample=class(TInterfacedObject,Isample)

public

function getstring:string;

end;

//function定义

function Tsample.getstring:string;

begin

result:='what show is ';

end;

//调用类对象

var sample:Tsample;

begin

sample:=Tsample.create;

showmessage(sample.getstring+'class object!');

sample.free;

end;

//调用接口

var sampleinterface:Isample;

sample:Tsample;

begin

sample:=Tsample.create;

sampleInterface:=sample;//Interface的实现必须使用class

{以上两行也可表达成sampleInterface:=Tsample.create;}

showmessage(sampleInterface.getstring+'Interface!');

//sample.free;{和局部类不同,Interface中的类自动释放}

sampleInterface:=nil;{释放接口对象}

end;

[DELPHI]任务条就看不当程序

var

ExtendedStyle : Integer;

begin

Application.Initialize;

ExtendedStyle := GetWindowLong (Application.Handle, GWL_EXSTYLE);

SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle OR WS_EX_TOOLWINDOW AND NOT 

WS_EX_APPWINDOW);

Application.CreateForm(TForm1, Form1);

Application.Run;

end. 

[DELPHI]ALT+CTRL+DEL看不到程序

在implementation后添加声明:

function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';

RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏

RegisterServiceProcess(GetCurrentProcessID, 0);//显示

[DELPHI]检测光驱符号 

var drive:char;

cdromID:integer;

begin

for drive:='d' to 'z' do

begin

cdromID:=GetDriveType(pchar(drive+':\'));

if cdromID=5 then showmessage('你的光驱为:'+drive+'盘!');

end;

end;

[DELPHI]检测声卡

if auxGetNumDevs()<=0 then showmessage('No soundcard found!') else showmessage('Any soundcard 

found!');

[DELPHI]在字符串网格中画图

StringGrid.OnDrawCell事件

with StringGrid1.Canvas do 

Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic); 

[SQL SERVER]SQL中代替Like语句的另一种写法

比如查找用户名包含有"c"的所有用户, 可以用 

use mydatabase 

select * from table1 where username like'%c%" 

下面是完成上面功能的另一种写法: 

use mydatabase 

select * from table1 where charindex('c',username)>0 

这种方法理论上比上一种方法多了一个判断语句,即>0, 但这个判断过程是最快的, 我想信80%以上的运算都是

花在查找字 

符串及其它的运算上, 所以运用charindex函数也没什么大不了. 用这种方法也有好处, 那就是对%,|等在不能直

接用like 

查找到的字符中可以直接在这charindex中运用, 如下: 

use mydatabase 

select * from table1 where charindex('%',username)>0 

也可以写成: 

use mydatabase 

select * from table1 where charindex(char(37),username)>0 

ASCII的字符即为% 

[DELPHI]SQL显示多数据库/

SELECT DISTINCT A.bianhao,a.xingming, b.gongzi FROM "jianjie.dbf" a, "gongzi.DBF" b 

WHERE A.bianhao=b.bianhao

[DELPHI]RFC(Request For Comment)相关

IETF(Internet Engineering Task Force)维护RFC文档http://www.ietf.cnri.reston.va.us

RFC882:报文头标结构

RFC1521:MIME第一部分,传输报文方法

RFC1945:多媒体文档传输文档

[DELPHI]TNMUUProcessor的使用

var inStream,outStream:TFileStream;

begin

inStream:=TFileStream.create(infile.txt,fmOpenRead);

outStream:=TFileStream(outfile.txt,fmCreate);

NMUUE.Method:=uuCode;{UUEncode/Decode}

//NMUUE.Method:=uuMIME;{MIME}

NMUUE.InputStream:=InStream;

NMUUE.OutputStream:=OutStream;

NMUUE.Encode;{编码处理}

//NMUUE.Decode;{解码处理}

inStream.free;

outStream.free;

end;

[DELPHI]TFileStream的操作

//从文件流当前位置读count字节到缓冲区BUFFER

function read(var buffer;count:longint):longint;override;

//将缓冲区BUFFER读到文件流中

function write(const buffer;count:longint):longint;override;

//设置文件流当前读写指针为OFFSET

function seek(offset:longint;origin:word):longint;override;

origin={soFromBeginning,soFromCurrent,soFromEnd}

//从另一文件流中当前位置复制COUNT到当前文件流当前位置

function copyfrom(source:TStream;count:longint):longint;

//读指定文件到文件流

var myFStream:TFileStream;

begin

myFStream:=TFileStream.create(OpenDialog1.filename,fmOpenRead);

end;

[JavaScript]检测是否安装IE插件Shockwave&Quicktime

<script LANGUAGE="JavaScript">

var myPlugin = navigator.plugins["Shockwave"];

if (myPlugin)

document.writeln("你已经安装了 Shockwave!")

else

document.writeln("你尚未安装 Shockwave!")

</script><br>

<script LANGUAGE="JavaScript">

var myPlugin = navigator.plugins["Quicktime"];

if (myPlugin)

document.writeln("你已经安装了Quicktime!")

else

document.writeln("你尚未安装 Quicktime!")

</script>

[INTERNET]表格中引用IFRAME效果

<table border="0" cellpadding="0" cellspacing="0" width="100%">

<tr>

<td><ILAYER id="ad1" visibility="hidden" height="60"></ILAYER> <NOLAYER> <IFRAME 

SRC="i:\jinhtml\zj\h21.htm" width="500" height="200" marginwidth="0" marginheight="110" hspace="10" 

vspace="20" frameborder="0" scrolling="1"></IFRAME> </NOLAYER> </td>

</tr>

</table>

[DELPHI]WebBrowser控件技巧

1。实现打印功能

var vaIn, vaOut: OleVariant;

WebBrowser.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, 

vaOut);

2。WebBrowser从流中读取页面

function TForm1.LoadFromStream(const AStream: TStream): HRESULT;

begin

AStream.seek(0, 0);

Result := (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(AStream));

end;

3。"about:" protocol will let you Navigate to an HTML string:

procedure TForm1.LoadHTMLString(sHTML: String);

var Flags, TargetFrameName, PostData, Headers: OleVariant;

WebBrowser1.Navigate('about:' + sHTML, Flags, TargetFrameName, PostData, Headers)

4。"res:" protocol will let you Navigate to an HTML file stored as a resource. More informations is available from 

the Microsoft site:

procedure TForm1.LoadHTMLResource;

var Flags, TargetFrameName, PostData, Headers: OleVariant;

WebBrowser1.Navigate('res://' + Application.ExeName + '/myhtml', Flags, TargetFrameName, PostData, 

Headers)

使用brcc32.exe建立资源文件 (*.rc) 

MYHTML 23 ".\html\myhtml.htm"

MOREHTML 23 ".\html\morehtml.htm"

{$R HTML.RES} //html.rc被编译成html.res

5。保存完整的HTML文件

var

HTMLDocument: IHTMLDocument2;

PersistFile: IPersistFile;

begin

HTMLDocument := WebBrowser1.Document as IHTMLDocument2;

PersistFile := HTMLDocument as IPersistFile;

PersistFile.Save(StringToOleStr('test.htm'), True);

while HTMLDocument.readyState <> 'complete' do

Application.ProcessMessages;

end;

◇[DELPHI]安装WebBrowser控件(内嵌IE控件)

你必须先确定系统已安装Internet Explorer4或以后版本,DELPHI菜单--Component- - Import ActiveX Contro

,列表中选择Microsoft Internet Controls"并ADD到一个已存在的包文件中,WebBrowser控件将显示在ActiveX

控件面板。 

[DELPHI]实现windows2000半透明窗体

function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; 

stdcall; external user32;//函数声明

procedure TForm1.FormCreate(Sender: TObject);

var l:longint;

begin

l:=getWindowLong(Handle, GWL_EXSTYLE);

l := l Or $80000;

SetWindowLong (handle, GWL_EXSTYLE, l);

SetLayeredWindowAttributes(handle, 0, 180, 2);

end;

[DELPHI]程序显示广告WebBrowser加载图片

var Flag, frame, pData, Header: OLEVariant;

begin

WebBrowser1.Navigate('http://www.chineseall.com/images/logo.jpg', flag, frame,pData, Header)

end;

[DELPHI]计算一个目录的大小

function GetDirectorySize(const ADirectory: string): Integer; 

var 

Dir: TSearchRec; 

Ret: integer; 

Path: string; 

begin 

Result := 0; 

Path := ExtractFilePath(ADirectory); 

Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir); 

if Ret <> NO_ERROR then 

exit; 

try 

while ret=NO_ERROR do 

begin 

inc(Result, Dir.Size); 

//如果是目录,且不是'.'或'..'则进行递归调用

if (Dir.Attr in [faDirectory]) and (Dir.Name[1] <> '.') then 

Inc(Result, GetDirectorySize(Path + Dir.Name + '\*.*')); 

Ret := Sysutils.FindNext(Dir); 

end; 

finally 

Sysutils.FindClose(Dir); 

end; 

end; 

[DELPHI]清空一个目录

function EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :

Boolean;

var

SearchRec : TSearchRec;

Res : Integer;

begin

Result := False;

TheDirectory := NormalDir(TheDirectory);

Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);

try

while Res = 0 do

begin

if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then

begin

if ((SearchRec.Attr and faDirectory) > 0) and Recursive

then begin

EmptyDirectory(TheDirectory + SearchRec.Name, True);

RemoveDirectory(PChar(TheDirectory + SearchRec.Name));

end

else begin

DeleteFile(PChar(TheDirectory + SearchRec.Name))

end;

end;

Res := FindNext(SearchRec);

end;

Result := True;

finally

FindClose(SearchRec.FindHandle);

end;

end;

[DELPHI]发布ADO程序之安装ADO

运行一次 MDac_typ.exe ,这个文件在微软的 Windows、IE、Office、Visual Studio 中都有。

安装程序所安装后的目录与程序中设置的目录路径一样,C:\Program Files\Common Files\System\ado文件夹

中有没有ADO组件,装ACCESS2000就有ADO2.1,没有则安装MS OFfice2000,编译要去

掉project->Option->Packages对话框中的Build With RunTime Library的勾。

[DELPHI]拦截Windows系统消息:WM_CLOSE消息

procedure WMClose(var Msg: TMessage);message WM_CLOSE;

procedure TMainForm.WMClose(var Msg: TMessage);

begin

m_bCloseNoQuery := false;

inherited;

end;

20 Windows消息的用法

小弟收集了些windows消息的用法,特与大家共享,由于水平有限,望各位高手能指出错误

提出更多的关于windows消息的用法,重金酬献¥¥¥

消息,就是指Wi n d o w s发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变

窗口尺寸、按下键盘上的一个键都会使Wi n d o w s发送一个消息给应用程序。

消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,

对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做T M s g,它

在Wi n d o w s单元中是这样声明的:

t y p e

TMsg = packed record

hwnd: HWND; / /窗口句柄

message: UINT; / /消息常量标识符

wParam: WPA R A M ; // 32位消息的特定附加信息

lParam: LPA R A M ; // 32位消息的特定附加信息

time: DWORD; / /消息创建时的时间

pt: TPoint; / /消息创建时的鼠标位置

e n d ;

消息中有什么?

是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:

hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可

视对象的句柄(窗口、对话框、按钮、编辑框等)。

message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也

可以是自定义的常量。

wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。

lParam 通常是一个指向内存中数据的指针。由于W P a r a m、l P a r a m和P o i n t e r都是3 2位的,

因此,它们之间可以相互转换。

    WM_NULL             = $0000;

  WM_CREATE           = $0001;

应用程序创建一个窗口

  WM_DESTROY          = $0002;

一个窗口被销毁

  WM_MOVE             = $0003;

移动一个窗口

  WM_SIZE             = $0005;

改变一个窗口的大小

  WM_ACTIVATE         = $0006;

一个窗口被激活或失去激活状态;

  WM_SETFOCUS         = $0007;

获得焦点后

  WM_KILLFOCUS        = $0008;

失去焦点

  WM_ENABLE           = $000A;

改变enable状态

  WM_SETREDRAW        = $000B;

设置窗口是否能重画  

  WM_SETTEXT          = $000C;

 应用程序发送此消息来设置一个窗口的文本

  WM_GETTEXT          = $000D;

 应用程序发送此消息来复制对应窗口的文本到缓冲区

  WM_GETTEXTLENGTH    = $000E;

得到与一个窗口有关的文本的长度(不包含空字符)

  WM_PAINT            = $000F;

要求一个窗口重画自己

  WM_CLOSE            = $0010;

当一个窗口或应用程序要关闭时发送一个信号

  WM_QUERYENDSESSION  = $0011;

当用户选择结束对话框或程序自己调用ExitWindows函数

  WM_QUIT             = $0012;

用来结束程序运行或当程序调用postquitmessage函数 

  WM_QUERYOPEN        = $0013;

 当用户窗口恢复以前的大小位置时,把此消息发送给某个图标

  WM_ERASEBKGND       = $0014;

 当窗口背景必须被擦除时(例在窗口改变大小时)

  WM_SYSCOLORCHANGE   = $0015;

 当系统颜色改变时,发送此消息给所有顶级窗口

  WM_ENDSESSION       = $0016;

 当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,

通知它对话是否结束

  WM_SYSTEMERROR      = $0017;

  WM_SHOWWINDOW       = $0018;

 当隐藏或显示窗口是发送此消息给这个窗口

  WM_ACTIVATEAPP      = $001C;

发此消息给应用程序哪个窗口是激活的,哪个是非激活的;

  WM_FONTCHANGE       = $001D;

当系统的字体资源库变化时发送此消息给所有顶级窗口

  WM_TIMECHANGE       = $001E;

 当系统的时间变化时发送此消息给所有顶级窗口

  WM_CANCELMODE       = $001F;

 发送此消息来取消某种正在进行的摸态(操作)

  WM_SETCURSOR        = $0020;

 如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口

  WM_MOUSEACTIVATE    = $0021;

 当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口

  WM_CHILDACTIVATE    = $0022;

发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小

  WM_QUEUESYNC        = $0023;

 此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序

分离出用户输入消息

  WM_GETMINMAXINFO    = $0024;

此消息发送给窗口当它将要改变大小或位置;

  WM_PAINTICON        = $0026;

 发送给最小化窗口当它图标将要被重画

  WM_ICONERASEBKGND   = $0027;

  此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画

  WM_NEXTDLGCTL       = $0028;

 发送此消息给一个对话框程序去更改焦点位置

  WM_SPOOLERSTATUS    = $002A;

 每当打印管理列队增加或减少一条作业时发出此消息 

  WM_DRAWITEM         = $002B;

  当button,combobox,listbox,menu的可视外观改变时发送

此消息给这些空件的所有者

  WM_MEASUREITEM      = $002C;

 当button, combo box, list box, list view control, or menu item 被创建时

发送此消息给控件的所有者

  WM_DELETEITEM       = $002D;

 当the list box 或 combo box 被销毁 或 当 某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息

  WM_VKEYTOITEM       = $002E;

此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息  

  WM_CHARTOITEM       = $002F;

此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息  

  WM_SETFONT          = $0030;

当绘制文本时程序发送此消息得到控件要用的颜色 

  WM_GETFONT          = $0031;

 应用程序发送此消息得到当前控件绘制文本的字体

  WM_SETHOTKEY        = $0032;

 应用程序发送此消息让一个窗口与一个热键相关连

  WM_GETHOTKEY        = $0033;

 应用程序发送此消息来判断热键与某个窗口是否有关联

  WM_QUERYDRAGICON    = $0037;

此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能

返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标

  WM_COMPAREITEM      = $0039;

发送此消息来判定combobox或listbox新增加的项的相对位置

  WM_GETOBJECT        = $003D;

  WM_COMPACTING       = $0041;

显示内存已经很少了

  WM_WINDOWPOSCHANGING = $0046;

发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数

  WM_WINDOWPOSCHANGED = $0047;

发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数

  WM_POWER            = $0048;(适用于16位的windows)

当系统将要进入暂停状态时发送此消息

  WM_COPYDATA         = $004A;

当一个应用程序传递数据给另一个应用程序时发送此消息

  WM_CANCELJOURNAL    = $004B;

当某个用户取消程序日志激活状态,提交此消息给程序

  WM_NOTIFY           = $004E;

当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口

  WM_INPUTLANGCHANGEREQUEST = $0050;

当用户选择某种输入语言,或输入语言的热键改变

  WM_INPUTLANGCHANGE  = $0051;

当平台现场已经被改变后发送此消息给受影响的最顶级窗口

  WM_TCARD            = $0052;

当程序已经初始化windows帮助例程时发送此消息给应用程序

  WM_HELP             = $0053;

此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就

发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口

  WM_USERCHANGED      = $0054;

当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体

设置信息,在用户更新设置时系统马上发送此消息;

  WM_NOTIFYFORMAT     = $0055;

公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构

在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信

  WM_CONTEXTMENU      = $007B;

当用户某个窗口中点击了一下右键就发送此消息给这个窗口

  WM_STYLECHANGING    = $007C;

当调用SETWINDOWLONG函数将要改变一个或多个 窗口的风格时发送此消息给那个窗口

  WM_STYLECHANGED     = $007D;

当调用SETWINDOWLONG函数一个或多个 窗口的风格后发送此消息给那个窗口

  WM_DISPLAYCHANGE    = $007E;

当显示器的分辨率改变后发送此消息给所有的窗口

  WM_GETICON          = $007F;

此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;

  WM_SETICON          = $0080;

程序发送此消息让一个新的大图标或小图标与某个窗口关联;

  WM_NCCREATE         = $0081;

当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;

  WM_NCDESTROY        = $0082;

此消息通知某个窗口,非客户区正在销毁

  WM_NCCALCSIZE       = $0083;

当某个窗口的客户区域必须被核算时发送此消息

  WM_NCHITTEST        = $0084;//移动鼠标,按住或释放鼠标时发生

  WM_NCPAINT          = $0085;

程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;

  WM_NCACTIVATE       = $0086;

此消息发送给某个窗口 仅当它的非客户区需要被改变来显示是激活还是非激活状态;

  WM_GETDLGCODE       = $0087;

发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件

通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它

  WM_NCMOUSEMOVE      = $00A0;

当光标在一个窗口的非客户区内移动时发送此消息给这个窗口      //非客户区为:窗体的标题栏及窗                                                                     

                                                              的边框体

  WM_NCLBUTTONDOWN    = $00A1;

当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息

  WM_NCLBUTTONUP      = $00A2;

当用户释放鼠标左键同时光标某个窗口在非客户区十发送此消息;

  WM_NCLBUTTONDBLCLK  = $00A3;

当用户双击鼠标左键同时光标某个窗口在非客户区十发送此消息

  WM_NCRBUTTONDOWN    = $00A4;

当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息

  WM_NCRBUTTONUP      = $00A5;

当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息

  WM_NCRBUTTONDBLCLK  = $00A6;

当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息

  WM_NCMBUTTONDOWN    = $00A7;

当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息

  WM_NCMBUTTONUP      = $00A8;

当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息

  WM_NCMBUTTONDBLCLK  = $00A9;

当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息

  WM_KEYFIRST         = $0100;

 WM_KEYDOWN          = $0100;      

 //按下一个键

  WM_KEYUP            = $0101;      

 //释放一个键

  WM_CHAR             = $0102;      

 //按下某键,并已发出WM_KEYDOWN,                                              WM_KEYUP消息

  WM_DEADCHAR         = $0103;

当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口

  WM_SYSKEYDOWN       = $0104;

当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;

  WM_SYSKEYUP         = $0105;

当用户释放一个键同时ALT 键还按着时提交此消息给拥有焦点的窗口

  WM_SYSCHAR          = $0106;

当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口

  WM_SYSDEADCHAR      = $0107;

当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口

  WM_KEYLAST          = $0108;

  WM_INITDIALOG       = $0110;

在一个对话框程序被显示前发送此消息给它,通常用此消息初始化控件和执行其它任务

  WM_COMMAND          = $0111;

当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键被翻译

  WM_SYSCOMMAND       = $0112;

当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息

  WM_TIMER            = $0113;                //发生了定时器事件

  WM_HSCROLL          = $0114;

当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件

  WM_VSCROLL          = $0115;

当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的控件  WM_INITMENU         = $0116;

当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许

程序在显示前更改菜单

  WM_INITMENUPOPUP    = $0117;

当一个下拉菜单或子菜单将要被激活时发送此消息,它允许程序在它显示前更改菜单,而不要

改变全部 

 WM_MENUSELECT       = $011F;

当用户选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)

  WM_MENUCHAR         = $0120;

当菜单已被激活用户按下了某个键(不同于加速键),发送此消息给菜单的所有者;

  WM_ENTERIDLE        = $0121;

当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待

  WM_MENURBUTTONUP    = $0122;

  WM_MENUDRAG         = $0123;

  WM_MENUGETOBJECT    = $0124;

  WM_UNINITMENUPOPUP  = $0125;

  WM_MENUCOMMAND      = $0126;

  WM_CHANGEUISTATE    = $0127;

  WM_UPDATEUISTATE    = $0128;

  WM_QUERYUISTATE     = $0129;  

  WM_CTLCOLORMSGBOX   = $0132;

在windows绘制消息框前发送此消息给消息框的所有者窗口,通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色

  WM_CTLCOLOREDIT     = $0133;

当一个编辑型控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色

  WM_CTLCOLORLISTBOX  = $0134;

当一个列表框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置列表框的文本和背景颜色 

 WM_CTLCOLORBTN      = $0135;

当一个按钮控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色

  WM_CTLCOLORDLG      = $0136;

当一个对话框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置对话框的文本背景颜色

  WM_CTLCOLORSCROLLBAR= $0137;

当一个滚动条控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置滚动条的背景颜色

  WM_CTLCOLORSTATIC   = $0138;   

当一个静态控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以

通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色

   WM_MOUSEFIRST       = $0200;

  WM_MOUSEMOVE        = $0200;  

                   //  移动鼠标

  WM_LBUTTONDOWN      = $0201; 

                    //按下鼠标左键

  WM_LBUTTONUP        = $0202; 

                   //释放鼠标左键

  WM_LBUTTONDBLCLK    = $0203;

                   //双击鼠标左键

  WM_RBUTTONDOWN      = $0204;

                   //按下鼠标右键

  WM_RBUTTONUP        = $0205;

                  //释放鼠标右键

  WM_RBUTTONDBLCLK    = $0206; 

                 //双击鼠标右键

  WM_MBUTTONDOWN      = $0207; 

                 //按下鼠标中键 

  WM_MBUTTONUP        = $0208; 

                 //释放鼠标中键

  WM_MBUTTONDBLCLK    = $0209; 

                  //双击鼠标中键

  WM_MOUSEWHEEL       = $020A;

当鼠标轮子转动时发送此消息个当前有焦点的控件

  WM_MOUSELAST        = $020A;

  WM_PARENTNOTIFY     = $0210;

当MDI子窗口被创建或被销毁,或用户按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口

  WM_ENTERMENULOOP    = $0211;

发送此消息通知应用程序的主窗口that已经进入了菜单循环模式

  WM_EXITMENULOOP     = $0212;

发送此消息通知应用程序的主窗口that已退出了菜单循环模式

  WM_NEXTMENU         = $0213;

  WM_SIZING           = 532;

当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置

也可以修改他们

  WM_CAPTURECHANGED   = 533;

发送此消息 给窗口当它失去捕获的鼠标时;

  WM_MOVING           = 534;

当用户在移动窗口时发送此消息,通过此消息应用程序可以监视窗口大小和位置

也可以修改他们;

  WM_POWERBROADCAST   = 536;

此消息发送给应用程序来通知它有关电源管理事件;

  WM_DEVICECHANGE     = 537;

当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序

  WM_IME_STARTCOMPOSITION        = $010D;

  WM_IME_ENDCOMPOSITION          = $010E;

  WM_IME_COMPOSITION             = $010F;

  WM_IME_KEYLAST                 = $010F;

  WM_IME_SETCONTEXT              = $0281;

  WM_IME_NOTIFY                  = $0282;

  WM_IME_CONTROL                 = $0283;

  WM_IME_COMPOSITIONFULL         = $0284;

  WM_IME_SELECT                  = $0285;

  WM_IME_CHAR                    = $0286;

  WM_IME_REQUEST                 = $0288;

  WM_IME_KEYDOWN                 = $0290;

  WM_IME_KEYUP                   = $0291;

  WM_MDICREATE        = $0220;

应用程序发送此消息给多文档的客户窗口来创建一个MDI 子窗口

  WM_MDIDESTROY       = $0221;

应用程序发送此消息给多文档的客户窗口来关闭一个MDI 子窗口

  WM_MDIACTIVATE      = $0222;

应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到

此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它;

  WM_MDIRESTORE       = $0223;

程序 发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小

  WM_MDINEXT          = $0224;

程序 发送此消息给MDI客户窗口激活下一个或前一个窗口

  WM_MDIMAXIMIZE      = $0225;

程序发送此消息给MDI客户窗口来最大化一个MDI子窗口;

  WM_MDITILE          = $0226;

程序 发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口

  WM_MDICASCADE       = $0227;

程序 发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口

  WM_MDIICONARRANGE   = $0228;

程序 发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口

  WM_MDIGETACTIVE     = $0229;

程序 发送此消息给MDI客户窗口来找到激活的子窗口的句柄

  WM_MDISETMENU       = $0230;

程序 发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单

  WM_ENTERSIZEMOVE    = $0231;

  WM_EXITSIZEMOVE     = $0232;

  WM_DROPFILES        = $0233;

  WM_MDIREFRESHMENU   = $0234;

  WM_MOUSEHOVER       = $02A1;

  WM_MOUSELEAVE       = $02A3;

  WM_CUT              = $0300;

程序发送此消息给一个编辑框或combobox来删除当前选择的文本

  WM_COPY             = $0301;

程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板

  WM_PASTE            = $0302;

程序发送此消息给editcontrol或combobox从剪贴板中得到数据

  WM_CLEAR            = $0303;

程序发送此消息给editcontrol或combobox清除当前选择的内容;

  WM_UNDO             = $0304;

程序发送此消息给editcontrol或combobox撤消最后一次操作

  WM_RENDERFORMAT     = $0305;

  WM_RENDERALLFORMATS = $0306;

  WM_DESTROYCLIPBOARD = $0307;

当调用ENPTYCLIPBOARD函数时 发送此消息给剪贴板的所有者

  WM_DRAWCLIPBOARD    = $0308;

当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来

显示剪贴板的新内容;

  WM_PAINTCLIPBOARD   = $0309;

当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画;

  WM_VSCROLLCLIPBOARD = $030A;

  WM_SIZECLIPBOARD    = $030B;

当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者;

  WM_ASKCBFORMATNAME  = $030C;

通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字

  WM_CHANGECBCHAIN    = $030D;

当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口;

  WM_HSCROLLCLIPBOARD = $030E; 

此消息通过一个剪贴板观察窗口发送给剪贴板的所有者 ;它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值;

  WM_QUERYNEWPALETTE  = $030F;

此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时有机会实现他的逻辑调色板

  WM_PALETTEISCHANGING= $0310;

当一个应用程序正要实现它的逻辑调色板时发此消息通知所有的应用程序

  WM_PALETTECHANGED   = $0311;

此消息在一个拥有焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此

来改变系统调色板 

  WM_HOTKEY           = $0312;

当用户按下由REGISTERHOTKEY函数注册的热键时提交此消息

  WM_PRINT            = 791;

应用程序发送此消息仅当WINDOWS或其它应用程序发出一个请求要求绘制一个应用程序的一部分;

  WM_PRINTCLIENT      = 792;

  WM_HANDHELDFIRST    = 856;

  WM_HANDHELDLAST     = 863;

  WM_PENWINFIRST      = $0380;

  WM_PENWINLAST       = $038F;

  WM_COALESCE_FIRST   = $0390;

  WM_COALESCE_LAST    = $039F;

  WM_DDE_FIRST        = $03E0;

  WM_DDE_INITIATE     = WM_DDE_FIRST + 0;

一个DDE客户程序提交此消息开始一个与服务器程序的会话来响应那个指定的程序和主题名;

  WM_DDE_TERMINATE    = WM_DDE_FIRST + 1;

一个DDE应用程序(无论是客户还是服务器)提交此消息来终止一个会话;

  WM_DDE_ADVISE       = WM_DDE_FIRST + 2;

一个DDE客户程序提交此消息给一个DDE服务程序来请求服务器每当数据项改变时更新它

  WM_DDE_UNADVISE     = WM_DDE_FIRST + 3;

一个DDE客户程序通过此消息通知一个DDE服务程序不更新指定的项或一个特殊的剪贴板格式的项

  WM_DDE_ACK          = WM_DDE_FIRST + 4;

此消息通知一个DDE(动态数据交换)程序已收到并正在处理WM_DDE_POKE, WM_DDE_EXECUTE, WM_DDE_DATA, WM_DDE_ADVISE, WM_DDE_UNADVISE, or WM_DDE_INITIAT消息

  WM_DDE_DATA         = WM_DDE_FIRST + 5;

一个DDE服务程序提交此消息给DDE客户程序来传递个一数据项给客户或通知客户的一条可用数据项

  WM_DDE_REQUEST      = WM_DDE_FIRST + 6;

一个DDE客户程序提交此消息给一个DDE服务程序来请求一个数据项的值;

  WM_DDE_POKE         = WM_DDE_FIRST + 7;

一个DDE客户程序提交此消息给一个DDE服务程序,客户使用此消息来请求服务器接收一个未经同意的数据项;服务器通过答复WM_DDE_ACK消息提示是否它接收这个数据项;

  WM_DDE_EXECUTE      = WM_DDE_FIRST + 8;

一个DDE客户程序提交此消息给一个DDE服务程序来发送一个字符串给服务器让它象串行命令一样被处理,服务器通过提交WM_DDE_ACK消息来作回应;

  WM_DDE_LAST         = WM_DDE_FIRST + 8;

  WM_APP = $8000;

  WM_USER             = $0400;

此消息能帮助应用程序自定义私有消息;

/////////////////////////////////////////////////////////////////////

通知消息(Notification message)是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通

知父窗口。通知消息只适用于标准的窗口控件如按钮、列表框、组合框、编辑框,以及Windows 95公

共控件如树状视图、列表视图等。例如,单击或双击一个控件、在控件中选择部分文本、操作控件的

滚动条都会产生通知消息。 

     按扭

B N _ C L I C K E D                        //用户单击了按钮

B N _ D I S A B L E                        //按钮被禁止

B N _ D O U B L E C L I C K E D    //用户双击了按钮

B N _ H I L I T E                         //用户加亮了按钮

B N _ PA I N T按钮应当重画

B N _ U N H I L I T E加亮应当去掉

组合框

C B N _ C L O S E U P组合框的列表框被关闭

C B N _ D B L C L K用户双击了一个字符串

C B N _ D R O P D O W N组合框的列表框被拉出

C B N _ E D I T C H A N G E用户修改了编辑框中的文本

C B N _ E D I T U P D AT E编辑框内的文本即将更新

C B N _ E R R S PA C E组合框内存不足

C B N _ K I L L F O C U S组合框失去输入焦点

C B N _ S E L C H A N G E在组合框中选择了一项

C B N _ S E L E N D C A N C E L用户的选择应当被取消

C B N _ S E L E N D O K用户的选择是合法的

C B N _ S E T F O C U S组合框获得输入焦点

编辑框

E N _ C H A N G E编辑框中的文本己更新

E N _ E R R S PA C E编辑框内存不足

E N _ H S C R O L L用户点击了水平滚动条

E N _ K I L L F O C U S编辑框正在失去输入焦点

E N _ M A X T E X T插入的内容被截断

E N _ S E T F O C U S编辑框获得输入焦点

E N _ U P D AT E编辑框中的文本将要更新

E N _ V S C R O L L用户点击了垂直滚动条消息含义

列表框

L B N _ D B L C L K用户双击了一项

L B N _ E R R S PA C E列表框内存不够

L B N _ K I L L F O C U S列表框正在失去输入焦点

L B N _ S E L C A N C E L选择被取消

L B N _ S E L C H A N G E选择了另一项

L B N _ S E T F O C U S列表框获得输入焦点

本人能力有限,如有不当之处,还望高手多多指教;baoxf1025@163.com

用实际行动向cool_cool同志学习

去年的某个时候我译了一下有关网络出错的信息,不是很准确,给出来分享一下。

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

#include <vcl.h>

#pragma hdrstop

#include <lmerr.h>

#include "errhandle.h"

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

#pragma package(smart_init)

#define  MYERRBASE  20000

#define USERNAMENULL      MYERRBASE+1

#define IDENTITYCARDNULL  MYERRBASE+2

#define LOGINNAMENULL     MYERRBASE+3

#define USERSHFNULL       MYERRBASE+4

#define PHONENULL         MYERRBASE+5

#define STUDENTCARDNULL   MYERRBASE+6

#define DOMAINNULL        MYERRBASE+7

#define MAILACCOUNTNULL   MYERRBASE+8

#define USERTYPENULL      MYERRBASE+9

#define NETWORKTYPENULL   MYERRBASE+10

 //NERR_BASE=2100

DWORD errhandle(HWND hwnd,DWORD err,LPCTSTR lpCaption)

{

  switch(err)

  {

  //网络相关错误处理----------------------------------------

    case 5                 :   MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户无权访问指定资源")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;  //   ERROR_ACCESS_DENIED =5

    case NERR_NetNotStarted: MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               此工作站的驱动器没有安装")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//     (NERR_BASE+2)   /* The workstation driver is not installed. */

    case NERR_UnknownServer: MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能定位此服务器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//     (NERR_BASE+3)   /* The server could not be located. */

    case NERR_ShareMem     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               程序导致一个内部错误,网络不能访问一个共享内存段")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//      (NERR_BASE+4)   /* An internal error occurred.  The network cannot access a shared memory segment. */

    case NERR_NoNetworkResource:MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               网络资源不足")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+5)   /* A network resource shortage occurred . */

    case NERR_RemoteOnly      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               本操作不能在工作站上执行")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//   (NERR_BASE+6)   /* This operation is not supported on workstations. */

    case NERR_DevNotRedirected   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备没有连接")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+7)   /* The device is not connected. */

/* NERR_BASE+8 is used for ERROR_CONNECTED_OTHER_PASSWORD */

/* UNUSED BASE+9 */

/* UNUSED BASE+10 */

/* UNUSED BASE+11 */

/* UNUSED BASE+12 */

/* UNUSED BASE+13 */

    case NERR_ServerNotStarted  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务没有启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//  (NERR_BASE+14)  /* The Server service is not started. */

    case NERR_ItemNotFound        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               队列为空")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+15)  /* The queue is empty. */

    case NERR_UnknownDevDir       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备或目录不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+16)  /* The device or directory does not exist. */

    case NERR_RedirectedPath      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能重定位此操作")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+17)  /* The operation is invalid on a redirected resource. */

    case NERR_DuplicateShare      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               共享名已存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+18)  /* The name has already been shared. */

    case NERR_NoRoom              :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器此时已不响应资源请求")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+19)  /* The server is currently out of the requested resource. */

/* UNUSED BASE+20 */

    case NERR_TooManyItems        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               请求数超出最大许可")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+21)  /* Requested addition of items exceeds the maximum allowed. */

    case NERR_InvalidMaxUsers     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               点对点请求只能在同时存在两个的用户间")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+22)  /* The Peer service supports only two simultaneous users. */

    case NERR_BufTooSmall         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               程序导致一个内部错误,API请求的缓冲区设置过小")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+23)  /* The API return buffer is too small. */

/* UNUSED BASE+24 */

/* UNUSED BASE+25 */

/* UNUSED BASE+26 */

    case NERR_RemoteErr           :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               远程API调用出错")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//          (NERR_BASE+27)  /* A remote API error occurred.  */

/* UNUSED BASE+28 */

/* UNUSED BASE+29 */

/* UNUSED BASE+30 */

    case NERR_LanmanIniError     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               打开或读配置文件时出错")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+31)  /* An error occurred when opening or reading the configuration file. */

/* UNUSED BASE+32 */

/* UNUSED BASE+33 */

/* UNUSED BASE+34 */

/* UNUSED BASE+35 */

    case NERR_NetworkError       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               一般网络错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+36)  /* A general network error occurred. */

    case NERR_WkstaInconsistentState:MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               工作站服务处于不稳定状态,重新启动此服务前请重新启动机器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;// (NERR_BASE+37)

    /* The Workstation service is in an inconsistent state. Restart the computer before restarting the Workstation service. */

    case NERR_WkstaNotStarted    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               工作站服务没有启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+38)  /* The Workstation service has not been started. */

    case NERR_BrowserNotStarted  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               请求的信息不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+39)  /* The requested information is not available. */

    case NERR_InternalError      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               程序导致一个Windows NT内部错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+40)  /* An internal Windows NT error occurred.*/

    case NERR_BadTransactConfig  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器不支持事务")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+41)  /* The server is not configured for transactions. */

    case NERR_InvalidAPI         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               调用的API不支持远程服务器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+42)  /* The requested API is not supported on the remote server. */

    case NERR_BadEventName       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               事件名不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+43)  /* The event name is invalid. */

    case NERR_DupNameReboot      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               网络中已存在此机器名,更改机器名重新启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+44)  /* The computer name already exists on the network. Change it and restart the computer. */

/*

 *      Config API related

 *              Error codes from BASE+45 to BASE+49

 */

/* UNUSED BASE+45 */

    case NERR_CfgCompNotFound    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               配置信息中找不到指定的控件")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+46)  /* The specified component could not be found in the configuration information. */

    case NERR_CfgParamNotFound   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               配置信息中找不到指定参数")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+47)  /* The specified parameter could not be found in the configuration information. */

    case NERR_LineTooLong        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               配置文件中的某一行太长")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+49)  /* A line in the configuration file is too long. */

/*

 *      Spooler API related

 *              Error codes from BASE+50 to BASE+79

 */

    case NERR_QNotFound          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的打印机不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+50)  /* The printer does not exist. */

    case NERR_JobNotFound        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的打印作业不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+51)  /* The print job does not exist. */

    case NERR_DestNotFound       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有找到目标打印机")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+52)  /* The printer destination cannot be found. */

    case NERR_DestExists         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               目标打印机已存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+53)  /* The printer destination already exists. */

    case NERR_QExists            :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               打印队列已存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+54)  /* The printer queue already exists. */

    case NERR_QNoRoom            :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能再添加打印机")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+55)  /* No more printers can be added. */

    case NERR_JobNoRoom          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能再添加打印作业")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+56)  /* No more print jobs can be added.  */

    case NERR_DestNoRoom         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能再添加目标打印机")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+57)  /* No more printer destinations can be added. */

    case NERR_DestIdle           :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               目标打印机无效或不接受控制")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+58)  /* This printer destination is idle and cannot accept control operations. */

    case NERR_DestInvalidOp      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               目标打印机请求含有非法操作")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+59)  /* This printer destination request contains an invalid control function. */

    case NERR_ProcNoRespond      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               打印进程没有响应")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+60)  /* The print processor is not responding. */

    case NERR_SpoolerNotLoaded   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               spooler没有运行")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+61)  /* The spooler is not running. */

    case NERR_DestInvalidState   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               目标打印机在当前状态下不能执行此操作")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+62)  /* This operation cannot be performed on the print destination in its current state. */

    case NERR_QInvalidState      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               打印队列在当前状态不能执行此操作")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+63)  /* This operation cannot be performed on the printer queue in its current state. */

    case NERR_JobInvalidState    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               打印作业在当前状态下不能执行引操作")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+64)  /* This operation cannot be performed on the print job in its current state. */

    case NERR_SpoolNoMemory      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               spooler内存请求失败")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+65)  /* A spooler memory allocation failure occurred. */

    case NERR_DriverNotFound     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备驱动不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+66)  /* The device driver does not exist. */

    case NERR_DataTypeInvalid    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               打印作业不支持的数据类型")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+67)  /* The data type is not supported by the print processor. */

    case NERR_ProcNotFound       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有安装打印进程")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+68)  /* The print processor is not installed. */

/*

 *      Service API related

 *              Error codes from BASE+80 to BASE+99

 */

    case NERR_ServiceTableLocked :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务数据库被锁定")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+80)  /* The service database is locked. */

    case NERR_ServiceTableFull   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务表为空")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+81)  /* The service table is full. */

    case NERR_ServiceInstalled   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               请求的服务已经启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+82)  /* The requested service has already been started. */

    case NERR_ServiceEntryLocked :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务没有响应控制")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+83)  /* The service does not respond to control actions. */

    case NERR_ServiceNotInstalled :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务没有启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+84) /* The service has not been started. */

    case NERR_BadServiceName     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务名不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+85)  /* The service name is invalid. */

    case NERR_ServiceCtlTimeout  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务没有响应控制功能")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+86)  /* The service is not responding to the control function. */

    case NERR_ServiceCtlBusy     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务控制忙")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+87)  /* The service control is busy. */

    case NERR_BadServiceProgName :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               配置文件包含不存在的服务程序名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+88)  /* The configuration file contains an invalid service program name. */

    case NERR_ServiceNotCtrl     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务在当前状态下不能控制")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+89)  /* The service could not be controlled in its present state. */

    case NERR_ServiceKillProc    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务非正常终止")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+90)  /* The service ended abnormally. */

    case NERR_ServiceCtlNotValid :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               该服务不能终止或暂停")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+91)  /* The requested pause or stop is not valid for this service. */

    case NERR_NotInDispatchTbl   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务控制调度没有在调度表中找到服务名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+92)  /* The service control dispatcher could not find the service name in the dispatch table. */

    case NERR_BadControlRecv     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               读服务调度管道失败")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+93)  /* The service control dispatcher pipe read failed. */

    case NERR_ServiceNotStarting :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能为新服务创建一个线程")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+94)  /* A thread for the new service could not be created. */

/*

 *      Wksta and Logon API related

 *              Error codes from BASE+100 to BASE+118

 */

    case NERR_AlreadyLoggedOn    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               工作站已经登录到局域网")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+100) /* This workstation is already logged on to the local-area network. */

    case NERR_NotLoggedOn        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               工作站没有登录到局域网")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+101) /* The workstation is not logged on to the local-area network. */

    case NERR_BadUsername        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户名或组名参数错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+102) /* The user name or group name parameter is invalid.  */

    case NERR_BadPassword        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               密码错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+103) /* The password parameter is invalid. */

    case NERR_UnableToAddName_W  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               登录进程没有加消息别名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+104) /* @W The logon processor did not add the message alias. */

    case NERR_UnableToAddName_F  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               登录进程没有加消息别名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+105) /* The logon processor did not add the message alias. */

    case NERR_UnableToDelName_W  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               注销进程没有删除消息别名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+106) /* @W The logoff processor did not delete the message alias. */

    case NERR_UnableToDelName_F  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               注销进程没有加消息别名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+107) /* The logoff processor did not delete the message alias. */

/* UNUSED BASE+108 */

    case NERR_LogonsPaused       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               登录进程被中断")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+109) /* Network logons are paused. */

    case NERR_LogonServerConflict :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               集中登录服务器冲突")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+110)/* A centralized logon-server conflict occurred. */

    case NERR_LogonNoUserPath    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器没有配置有效的用户路径")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+111) /* The server is configured without a valid user path. */

    case NERR_LogonScriptError   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               运行登录脚本时发生错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+112) /* An error occurred while loading or running the logon script. */

/* UNUSED BASE+113 */

    case NERR_StandaloneLogon    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有指定登录服务器,你的机器登录成独立的机器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+114) /* The logon server was not specified.  Your computer will be logged on as STANDALONE. */

    case NERR_LogonServerNotFound :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有找到指定的登录服务器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+115) /* The logon server could not be found.  */

    case NERR_LogonDomainExists  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               机器已经存在一个登录域")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+116) /* There is already a logon domain for this computer.  */

    case NERR_NonValidatedLogon  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               登录服务器不能验证登录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+117) /* The logon server could not validate the logon. */

/*

 *      ACF API related (access, user, group)

 *              Error codes from BASE+119 to BASE+149

 */

    case NERR_ACFNotFound        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有找到安全控制数据库")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+119) /* The security database could not be found. */

    case NERR_GroupNotFound      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有找到指定的组名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+120) /* The group name could not be found. */

    case NERR_UserNotFound       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有找到指定的用户名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+121) /* The user name could not be found. */

    case NERR_ResourceNotFound   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有找到指定的资源名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+122) /* The resource name could not be found.  */

    case NERR_GroupExists        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               组已经存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+123) /* The group already exists. */

    case NERR_UserExists         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户账号已经存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+124) /* The user account already exists. */

    case NERR_ResourceExists     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               资源访问列表已经存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+125) /* The resource permission list already exists. */

    case NERR_NotPrimary         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               此操作只能在域的主域控制上进行")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+126) /* This operation is only allowed on the primary domain controller of the domain. */

    case NERR_ACFNotLoaded       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               安全数据库没有启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+127) /* The security database has not been started. */

    case NERR_ACFNoRoom          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户账号数据库中名字过多")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+128) /* There are too many names in the user accounts database. */

    case NERR_ACFFileIOFail      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               驱动器I/O操作失败")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+129) /* A disk I/O failure occurred.*/

    case NERR_ACFTooManyLists    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               超过了每资源64个项目的限制")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+130) /* The limit of 64 entries per resource was exceeded. */

    case NERR_UserLogon          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能删除正一个打开会话的用户")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+131) /* Deleting a user with a session is not allowed. */

    case NERR_ACFNoParent        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能够定位上一级目录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+132) /* The parent directory could not be located. */

    case NERR_CanNotGrowSegment  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能添加到安全数据库会话高速缓冲区(cache)段")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+133) /* Unable to add to the security database session cache segment. */

    case NERR_SpeGroupOp         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               此操作不能对此特殊组(系统账号)进行")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+134) /* This operation is not allowed on this special group. */

    case NERR_NotInCache         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               该用户没有使用用户账号数据库会话高速缓冲区(cache)")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+135) /* This user is not cached in user accounts database session cache. */

    case NERR_UserInGroup        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户已经属于该组")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+136) /* The user already belongs to this group. */

    case NERR_UserNotInGroup     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户不属于该组")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+137) /* The user does not belong to this group. */

    case NERR_AccountUndefined   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户账号没有定义")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+138) /* This user account is undefined. */

    case NERR_AccountExpired     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户账号已经过期")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+139) /* This user account has expired. */

    case NERR_InvalidWorkstation :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户禁止从此工作站上登录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+140) /* The user is not allowed to log on from this workstation. */

    case NERR_InvalidLogonHours  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户限制了不能在此时登录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+141) /* The user is not allowed to log on at this time.  */

    case NERR_PasswordExpired    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户口令已经过期")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+142) /* The password of this user has expired. */

    case NERR_PasswordCantChange :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能更改此用户的密码")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+143) /* The password of this user cannot change. */

    case NERR_PasswordHistConflict :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户口令不能在此时使用")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+144) /* This password cannot be used now. */

    case NERR_PasswordTooShort   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               密码太短")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+145) /* The password is shorter than required. */

    case NERR_PasswordTooRecent  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               新密码与旧密码太接近")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+146) /* The password of this user is too recent to change.  */

    case NERR_InvalidDatabase    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               完全数据库被中断")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+147) /* The security database is corrupted. */

    case NERR_DatabaseUpToDate   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有必要复制网络/本地安全数据库(自上次同步以来没有变更)")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+148) /* No updates are necessary to this replicant network/local security database. */

    case NERR_SyncRequired       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               数据库复本已经过时,请同步")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+149) /* This replicant database is outdated; synchronization is required. */

/*

 *      Use API related

 *              Error codes from BASE+150 to BASE+169

 */

    case NERR_UseNotFound        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有找到网络连接")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+150) /* The network connection could not be found. */

    case NERR_BadAsgType         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的类型无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+151) /* This asg_type is invalid. */

    case NERR_DeviceIsShared     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备当前正在(其他用户)共享")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+152) /* This device is currently being shared. */

/*

 *      Message Server related

 *              Error codes BASE+170 to BASE+209

 */

    case NERR_NoComputerName     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               计算机名不能添加为一个消息别名,网络中可能存在同名计算机")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+170) /* The computer name could not be added as a message alias.  The name may already exist on the network. */

    case NERR_MsgAlreadyStarted  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息服务已经启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+171) /* The Messenger service is already started. */

    case NERR_MsgInitFailed      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息服务启动失败")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+172) /* The Messenger service failed to start.  */

    case NERR_NameNotFound       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息别名不能在网络中找到")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+173) /* The message alias could not be found on the network. */

    case NERR_AlreadyForwarded   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息别名已经转发")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+174) /* This message alias has already been forwarded. */

    case NERR_AddForwarded       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息别名已添加但仍然被转发")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+175) /* This message alias has been added but is still forwarded. */

    case NERR_AlreadyExists      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               本地已经存在此消息别名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+176) /* This message alias already exists locally. */

    case NERR_TooManyNames       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               超过了最大的消息别名数")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+177) /* The maximum number of added message aliases has been exceeded. */

    case NERR_DelComputerName    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               此计算机名不能被删除")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+178) /* The computer name could not be deleted.*/

    case NERR_LocalForward       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息别名不能转发给同一工作站")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+179) /* Messages cannot be forwarded back to the same workstation. */

    case NERR_GrpMsgProcessor    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               域消息进程出错")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+180) /* An error occurred in the domain message processor. */

    case NERR_PausedRemote       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息已经发送,但容器中断了消息服务")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+181) /* The message was sent, but the recipient has paused the Messenger service. */

    case NERR_BadReceive         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息已经发送,但没有接受")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+182) /* The message was sent but not received. */

    case NERR_NameInUse          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息别名当前正在使用,请稍后再试")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+183) /* The message alias is currently in use. Try again later. */

    case NERR_MsgNotStarted      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息服务没有启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+184) /* The Messenger service has not been started. */

    case NERR_NotLocalName       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               名字不在本地计算机上")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+185) /* The name is not on the local computer. */

    case NERR_NoForwardName      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               转发的消息别名在网络中不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+186) /* The forwarded message alias could not be found on the network. */

    case NERR_RemoteFull         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               远程站上的消息别名表已满")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+187) /* The message alias table on the remote station is full. */

    case NERR_NameNotForwarded   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               别名消息没有转发")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+188) /* Messages for this alias are not currently being forwarded. */

    case NERR_TruncatedBroadcast :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               广播消息被删节")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+189) /* The broadcast message was truncated. */

    case NERR_InvalidDevice      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               无效的设备名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+194) /* This is an invalid device name. */

    case NERR_WriteFault         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               发生一个写错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+195) /* A write fault occurred. */

/* UNUSED BASE+196 */

    case NERR_DuplicateName      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               复制消息已经在网络中存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+197) /* A duplicate message alias exists on the network. */

    case NERR_DeleteLater        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               此消息别名将被删除")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+198) /* @W This message alias will be deleted later. */

    case NERR_IncompleteDel      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               消息别名没有在所有的网络中成功删除")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+199) /* The message alias was not successfully deleted from all networks. */

    case NERR_MultipleNets       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               在多重网络计算机上操作不支持")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+200) /* This operation is not supported on computers with multiple networks. */

/*

 *      Server API related

 *              Error codes BASE+210 to BASE+229

 */

    case NERR_NetNameNotFound    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               共享资源不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+210) /* This shared resource does not exist.*/

    case NERR_DeviceNotShared    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备没有共享")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+211) /* This device is not shared. */

    case NERR_ClientNameNotFound :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不在与此计算机名相关的会话")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+212) /* A session does not exist with that computer name. */

    case NERR_FileIdNotFound     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               此ID号的打开文件不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+214) /* There is not an open file with that identification number. */

    case NERR_ExecFailure        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               执行远程管理指令时导致一个错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+215) /* A failure occurred when executing a remote administration command. */

    case NERR_TmpFile            :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               打开一个远程临时文件时发生错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+216) /* A failure occurred when opening a remote temporary file. */

    case NERR_TooMuchData        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               从远程管理指令返回的数据被删除到64K")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+217) /* The data returned from a remote administration command has been truncated to 64K. */

    case NERR_DeviceShareConflict :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备不能同时共享为spooled和非spooled资源")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+218) /* This device cannot be shared as both a spooled and a non-spooled resource. */

    case NERR_BrowserTableIncomplete :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器列表的信息可能不正确")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+219)  /* The information in the list of servers may be incorrect. */

    case NERR_NotLocalDomain     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               域中的计算机没有活动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+220) /* The computer is not active in this domain. */

    case NERR_IsDfsShare         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               共享肯定在删除前已经从分布式文件系统中撤销")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+221) /* The share must be removed from the Distributed File System before it can be deleted. */

/*

 *      CharDev API related

 *              Error codes BASE+230 to BASE+249

 */

/* UNUSED BASE+230 */

    case NERR_DevInvalidOpCode   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备不支持此操作")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+231) /* The operation is invalid for this device. */

    case NERR_DevNotFound        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备不能共享")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+232) /* This device cannot be shared. */

    case NERR_DevNotOpen         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备没有打开")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+233) /* This device was not open. */

    case NERR_BadQueueDevString  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备名列表无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+234) /* This device name list is invalid. */

    case NERR_BadQueuePriority   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               队列的优先级无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+235) /* The queue priority is invalid. */

    case NERR_NoCommDevs         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有共享的通信设备")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+237) /* There are no shared communication devices. */

    case NERR_QueueNotFound      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的队列不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+238) /* The queue you specified does not exist. */

    case NERR_BadDevString       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               队列列表不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+240) /* This list of devices is invalid. */

    case NERR_BadDev             :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               请求的设备不存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+241) /* The requested device is invalid. */

    case NERR_InUseBySpooler     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备已经被spooler使用")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+242) /* This device is already in use by the spooler. */

    case NERR_CommDevInUse       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备已经作为一个通信设备在使用")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+243) /* This device is already in use as a communication device. */

/*

 *      NetICanonicalize and NetIType and NetIMakeLMFileName

 *      NetIListCanon and NetINameCheck

 *              Error codes BASE+250 to BASE+269

 */

    case NERR_InvalidComputer   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               计算机名无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+251) /* This computer name is invalid. */

/* UNUSED BASE+252 */

/* UNUSED BASE+253 */

    case NERR_MaxLenExceeded    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的字符串和前缀太长")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+254) /* The string and prefix specified are too long. */

/* UNUSED BASE+255 */

    case NERR_BadComponent      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               路径控件无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+256) /* This path component is invalid. */

    case NERR_CantType          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能确定输入类型")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+257) /* Could not determine the type of input. */

/* UNUSED BASE+258 */

/* UNUSED BASE+259 */

    case NERR_TooManyEntries    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               类型缓冲没有足够大")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+262) /* The buffer for types is not big enough. */

/*

 *      NetProfile

 *              Error codes BASE+270 to BASE+276

 */

    case NERR_ProfileFileTooBig  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               特征文件不能超过64K")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+270) /* Profile files cannot exceed 64K. */

    case NERR_ProfileOffset      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               起始偏移超出范围")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+271) /* The start offset is out of range. */

    case NERR_ProfileCleanup     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               系统不能删除当前与网络资源的连接")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+272) /* The system cannot delete current connections to network resources. */

    case NERR_ProfileUnknownCmd  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               系统不能删除此文件中的命令行")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+273) /* The system was unable to parse the command line in this file.*/

    case NERR_ProfileLoadErr     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               装载特征文件时发生错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+274) /* An error occurred while loading the profile file. */

    case NERR_ProfileSaveErr     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               存储特征文件时发生错误,特征文件存储了一部分")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+275) /* @W Errors occurred while saving the profile file.  The profile was partially saved. */

/*

 *      NetAudit and NetErrorLog

 *              Error codes BASE+277 to BASE+279

 */

    case NERR_LogOverflow           :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               日志文件 %1 为空")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+277)      /* Log file %1 is full. */

    case NERR_LogFileChanged        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               日志文件在两次读操作之间已改变")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+278)      /* This log file has changed between reads. */

    case NERR_LogFileCorrupt        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               日志文件 %1 已坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+279)      /* Log file %1 is corrupt. */

/*

 *      NetRemote

 *              Error codes BASE+280 to BASE+299

 */

    case NERR_SourceIsDir   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               源路径不能是一个目录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+280) /* The source path cannot be a directory. */

    case NERR_BadSource     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               非法源路径")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+281) /* The source path is illegal. */

    case NERR_BadDest       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               非法目的路径")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+282) /* The destination path is illegal. */

    case NERR_DifferentServers   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               源路径和目的路径不在不同服务器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+283) /* The source and destination paths are on different servers. */

/* UNUSED BASE+284 */

    case NERR_RunSrvPaused       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               请求的服务器已经中断")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+285) /* The Run server you requested is paused. */

/* UNUSED BASE+286 */

/* UNUSED BASE+287 */

/* UNUSED BASE+288 */

    case NERR_ErrCommRunSrv      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               与一运行的服务器通信时发生错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+289) /* An error occurred when communicating with a Run server. */

/* UNUSED BASE+290 */

    case NERR_ErrorExecingGhost  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               启动一后台进程时导致一个错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+291) /* An error occurred when starting a background process. */

    case NERR_ShareNotFound      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               连接的共享资源现在找不到")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+292) /* The shared resource you are connected to could not be found.*/

/* UNUSED BASE+293 */

/* UNUSED BASE+294 */

/*

 *  NetWksta.sys (redir) returned error codes.

 *

 *          NERR_BASE + (300-329)

 */

    case NERR_InvalidLana        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               局域网适配器编号无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+300) /* The LAN adapter number is invalid.  */

    case NERR_OpenFiles          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               连接中存在打开的文件")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+301) /* There are open files on the connection.    */

    case NERR_ActiveConns        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               已经存在活动的连接")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+302) /* Active connections still exist. */

    case NERR_BadPasswordCore    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               共享名密码无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+303) /* This share name or password is invalid. */

    case NERR_DevInUse           :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备正为一活动进程所访问")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+304) /* The device is being accessed by an active process. */

    case NERR_LocalDrive         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               驱动名正被本地驱动器使用")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+305) /* The drive letter is in use locally. */

/*

 *  Alert error codes.

 *

 *          NERR_BASE + (330-339)

 */

    case NERR_AlertExists        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的客户已注册为指定的事件")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+330) /* The specified client is already registered for the specified event. */

    case NERR_TooManyAlerts      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               警报表已满")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+331) /* The alert table is full. */

    case NERR_NoSuchAlert        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               引发一个无效的或不存在的警报名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+332) /* An invalid or nonexistent alert name was raised. */

    case NERR_BadRecipient       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               警报容器无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+333) /* The alert recipient is invalid.*/

    case NERR_AcctLimitExceeded  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               一个用户与服务器的会话已删除,因为用户的登录时效已到")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+334) /* A user's session with this server has been deleted, because the user's logon hours are no longer valid. */

/*

 *  Additional Error and Audit log codes.

 *

 *          NERR_BASE +(340-343)

 */

    case NERR_InvalidLogSeek     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               日志文件没有包含请求的记录号")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+340) /* The log file does not contain the requested record number. */

/* UNUSED BASE+341 */

/* UNUSED BASE+342 */

/* UNUSED BASE+343 */

/*

 *  Additional UAS and NETLOGON codes

 *

 *          NERR_BASE +(350-359)

 */

    case NERR_BadUasConfig       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               用户账号数据库没有配置正确")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+350) /* The user accounts database is not configured correctly. */

    case NERR_InvalidUASOp       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               Netlogon服务运行时禁止此操作")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+351) /* This operation is not permitted when the Netlogon service is running. */

    case NERR_LastAdmin          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能对系统最后一个管理员账号进行此操作")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+352) /* This operation is not allowed on the last administrative account. */

    case NERR_DCNotFound         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               找不到域的域控制器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+353) /* Could not find domain controller for this domain. */

    case NERR_LogonTrackingError :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能为此用户设置登录信息")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+354) /* Could not set logon information for this user. */

    case NERR_NetlogonNotStarted :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               Netlogon服务没有启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+355) /* The Netlogon service has not been started. */

    case NERR_CanNotGrowUASFile  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能添加到用户账号数据库")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+356) /* Unable to add to the user accounts database. */

    case NERR_TimeDiffAtDC       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器的时钟与主域控制器的时钟不同步")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+357) /* This server's clock is not synchronized with the primary domain controller's clock. */

    case NERR_PasswordMismatch   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               侦测到一个密码不匹配")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+358) /* A password mismatch has been detected. */

/*

 *  Server Integration error codes.

 *

 *          NERR_BASE +(360-369)

 */

    case NERR_NoSuchServer       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器ID没有指定一个可用的服务器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+360) /* The server identification does not specify a valid server. */

    case NERR_NoSuchSession      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               会话ID没有指定一个可用的会话")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+361) /* The session identification does not specify a valid session. */

    case NERR_NoSuchConnection   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               连接ID没有指定一个可用的连接")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+362) /* The connection identification does not specify a valid connection. */

    case NERR_TooManyServers     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               可用的服务器表中没有空间提供给另一项")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+363) /* There is no space for another entry in the table of available servers. */

    case NERR_TooManySessions    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器会话数达到它支持的极限")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+364) /* The server has reached the maximum number of sessions it supports. */

    case NERR_TooManyConnections :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器连接数达到它支持的极限")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+365) /* The server has reached the maximum number of connections it supports. */

    case NERR_TooManyFiles       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器再不能打开文件,因为打开文件数已经达到最大数")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+366) /* The server cannot open more files because it has reached its maximum number. */

    case NERR_NoAlternateServers :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务器没有注册后备服务器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+367) /* There are no alternate servers registered on this server. */

/* UNUSED BASE+368 */

/* UNUSED BASE+369 */

    case NERR_TryDownLevel       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               API调用错误,请试用下一层次(远程管理协议)的API,代替。")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+370) /* Try down-level (remote admin protocol) version of API instead. */

/*

 *  UPS error codes.

 *

 *          NERR_BASE + (380-384)

 */

    case NERR_UPSDriverNotStarted    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               UPS服务不能访问UPS设备")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+380) /* The UPS driver could not be accessed by the UPS service. */

    case NERR_UPSInvalidConfig       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               UPS服务没有配置正确")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+381) /* The UPS service is not configured correctly. */

    case NERR_UPSInvalidCommPort     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               UPS服务不能访问指定的通讯端口")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+382) /* The UPS service could not access the specified Comm Port. */

    case NERR_UPSSignalAsserted      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               UPS呈线路错误或低电池不足状态,服务不能启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+383) /* The UPS indicated a line fail or low battery situation. Service not started. */

    case NERR_UPSShutdownFailed      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               UPS服务不能成功执行系统关闭")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+384) /* The UPS service failed to perform a system shut down. */

/*

 *  Remoteboot error codes.

 *

 *          NERR_BASE + (400-419)

 *          Error codes 400 - 405 are used by RPLBOOT.SYS.

 *          Error codes 403, 407 - 416 are used by RPLLOADR.COM,

 *          Error code 417 is the alerter message of REMOTEBOOT (RPLSERVR.EXE).

 *          Error code 418 is for when REMOTEBOOT can't start

 *          Error code 419 is for a disallowed 2nd rpl connection

 *

 */

    case NERR_BadDosRetCode      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               程序返回一个MS-DOS错误代码")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+400) /* The program below returned an MS-DOS error code:*/

    case NERR_ProgNeedsExtraMem  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               程序需要更多的内存")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+401) /* The program below needs more memory:*/

    case NERR_BadDosFunction     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               程序调用一个不支持MS-DOS的函数")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+402) /* The program below called an unsupported MS-DOS function:*/

    case NERR_RemoteBootFailed   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               工作站不能启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+403) /* The workstation failed to boot.*/

    case NERR_BadFileCheckSum    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               文件错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+404) /* The file below is corrupt.*/

    case NERR_NoRplBootSystem    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               启动定义文件中没有指定加载系统")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+405) /* No loader is specified in the boot-block definition file.*/

    case NERR_RplLoadrNetBiosErr :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               NETBIOS返回一个错误:NCB 和 SMB 已卸载")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+406) /* NetBIOS returned an error: The NCB and SMB are dumped above.*/

    case NERR_RplLoadrDiskErr    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               设备I/O错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+407) /* A disk I/O error occurred.*/

    case NERR_ImageParamErr      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               镜像参数转换失败")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+408) /* Image parameter substitution failed.*/

    case NERR_TooManyImageParams :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               跨过磁盘扇区边界的镜像参数太多")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+409) /* Too many image parameters cross disk sector boundaries.*/

    case NERR_NonDosFloppyUsed   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               镜像不是由MS-DOS的format/s生成的")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+410) /* The image was not generated from an MS-DOS diskette formatted with /S.*/

    case NERR_RplBootRestart     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               远程启动稍后将重新启动")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+411) /* Remote boot will be restarted later.*/

    case NERR_RplSrvrCallFailed  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               远程启动服务调用失败")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+412) /* The call to the Remoteboot server failed.*/

    case NERR_CantConnectRplSrvr :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能连接远程启动服务器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+413) /* Cannot connect to the Remoteboot server.*/

    case NERR_CantOpenImageFile  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能打开远程启动服务器上的镜像文件")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+414) /* Cannot open image file on the Remoteboot server.*/

    case NERR_CallingRplSrvr     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               连接远程启动服务器中...")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+415) /* Connecting to the Remoteboot server...*/

    case NERR_StartingRplBoot    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               连接远程启动服务器中...")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+416) /* Connecting to the Remoteboot server...*/

    case NERR_RplBootServiceTerm :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               远程启动服务已停止,检查日志以查找问题起因")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+417) /* Remote boot service was stopped; check the error log for the cause of the problem.*/

    case NERR_RplBootStartFailed :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               远程启动引导失败,检查日志以查找问题起因")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+418) /* Remote boot startup failed; check the error log for the cause of the problem.*/

    case NERR_RPL_CONNECTED      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不允许两次连接远程启动资源")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+419) /* A second connection to a Remoteboot resource is not allowed.*/

/*

 *  FTADMIN API error codes

 *

 *       NERR_BASE + (425-434)

 *

 *       (Currently not used in NT)

 *

 */

/*

 *  Browser service API error codes

 *

 *       NERR_BASE + (450-475)

 *

 */

    case NERR_BrowserConfiguredToNotRun     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               浏览服务配置了MaintainServerList=No")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+450) /* The browser service was configured with MaintainServerList=No. */

/*

 *  Additional Remoteboot error codes.

 *

 *          NERR_BASE + (510-550)

 */

    case NERR_RplNoAdaptersStarted          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务启动失败因为没有一块网卡启动了此服务")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+510) /*Service failed to start since none of the network adapters started with this service.*/

    case NERR_RplBadRegistry                :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               注册表启动信息坏导致服务启动失败")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+511) /*Service failed to start due to bad startup information in the registry.*/

    case NERR_RplBadDatabase                :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务启动失败因为其数据库不存在或已坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+512) /*Service failed to start because its database is absent or corrupt.*/

    case NERR_RplRplfilesShare              :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务失败因为缺少请求参数表文件共享")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+513) /*Service failed to start because RPLFILES share is absent.*/

    case NERR_RplNotRplServer               :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务失败因为缺少请求参数表用户组")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+514) /*Service failed to start because RPLUSER group is absent.*/

    case NERR_RplCannotEnum                 :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能列举服务记录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+515) /*Cannot enumerate service records.*/

    case NERR_RplWkstaInfoCorrupted         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               工作站记录信息已损坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+516) /*Workstation record information has been corrupted.*/

    case NERR_RplWkstaNotFound              :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               找不到工作站记录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+517) /*Workstation record was not found.*/

    case NERR_RplWkstaNameUnavailable       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               其它工作站使用了此工作名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+518) /*Workstation name is in use by some other workstation.*/

    case NERR_RplProfileInfoCorrupted       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               特征记录信息已损坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+519) /*Profile record information has been corrupted.*/

    case NERR_RplProfileNotFound            :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               找不到特征记录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+520) /*Profile record was not found.*/

    case NERR_RplProfileNameUnavailable     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               其它特征使用了此名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+521) /*Profile name is in use by some other profile.*/

    case NERR_RplProfileNotEmpty            :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               一些工作站使用了此特征")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+522) /*There are workstations using this profile.*/

    case NERR_RplConfigInfoCorrupted        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               配置记录信息已损坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+523) /*Configuration record information has been corrupted.*/

    case NERR_RplConfigNotFound             :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               找不到配置记录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+524) /*Configuration record was not found.*/

    case NERR_RplAdapterInfoCorrupted       :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               适配器ID记录信息已损坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+525) /*Adapter id record information has been corrupted.*/

    case NERR_RplInternal                   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               发生一个内部服务错误")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+526) /*An internal service error has occurred.*/

    case NERR_RplVendorInfoCorrupted        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               供应商ID记录信息已损坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

        break;//(NERR_BASE+527) /*Vendor id record information has been corrupted.*/

    case NERR_RplBootInfoCorrupted          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               启动块记录信息已损坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+528) /*Boot block record information has been corrupted.*/

    case NERR_RplWkstaNeedsUserAcct         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               此计算机记录的用户账号丢失")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+529) /*The user account for this workstation record is missing.*/

    case NERR_RplNeedsRPLUSERAcct           :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               找不到请求参数表用户本地组")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+530) /*The RPLUSER local group could not be found.*/

    case NERR_RplBootNotFound               :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               找不到启动块记录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+531) /*Boot block record was not found.*/

    case NERR_RplIncompatibleProfile        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               工作站与特征文件不符合")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+532) /*Chosen profile is incompatible with this workstation.*/

    case NERR_RplAdapterNameUnavailable     :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               其它工作站使用了选择的网卡ID")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+533) /*Chosen network adapter id is in use by some other workstation.*/

    case NERR_RplConfigNotEmpty             :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               已经有其它特征文件使用了此配置")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+534) /*There are profiles using this configuration.*/

    case NERR_RplBootInUse                  :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               已经有工作站、特征文件或配置使用了此启动块")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+535) /*There are workstations, profiles or configurations using this boot block.*/

    case NERR_RplBackupDatabase             :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               服务备份远程启动数据库失败")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+536) /*Service failed to backup Remoteboot database.*/

    case NERR_RplAdapterNotFound            :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               找不到适配器记录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+537) /*Adapter record was not found.*/

    case NERR_RplVendorNotFound             :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               找不到供应商记录")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+538) /*Vendor record was not found.*/

    case NERR_RplVendorNameUnavailable      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               其它供应商记录已使用了此名字")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+539) /*Vendor name is in use by some other vendor record.*/

    case NERR_RplBootNameUnavailable        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               其它启动块记录已使用了此(启动名、供应商ID)")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+540) /*(boot name, vendor id) is in use by some other boot block record.*/

    case NERR_RplConfigNameUnavailable      :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               其它配置已使用了此名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+541) /*Configuration name is in use by some other configuration.*/

/**INTERNAL_ONLY**/

/*

 *  Dfs API error codes.

 *

 *          NERR_BASE + (560-590)

 */

    case NERR_DfsInternalCorruption         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               分布式文件系统维护的内部数据库已损坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+560) /*The internal database maintained by the Dfs service is corrupt*/

    case NERR_DfsVolumeDataCorrupt          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               内部分布式文件系统数据库的一条记录已损坏")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+561) /*One of the records in the internal Dfs database is corrupt*/

    case NERR_DfsNoSuchVolume               :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               没有卷上存在与输入项匹配的路径项")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+562) /*There is no volume whose entry path matches the input Entry Path*/

    case NERR_DfsVolumeAlreadyExists        :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的卷名已存在")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+563) /*A volume with the given name already exists*/

    case NERR_DfsAlreadyShared              :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               分布式文件系统中已存在与指定名相同的共享")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+564) /*The server share specified is already shared in the Dfs*/

    case NERR_DfsNoSuchShare                :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的服务器共享不支持指定的分布式文件系统卷")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+565) /*The indicated server share does not support the indicated Dfs volume*/

    case NERR_DfsNotALeafVolume             :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               操作对一个无叶结点的卷无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+566) /*The operation is not valid on a non-leaf volume*/

    case NERR_DfsLeafVolume                 :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               操作对一个存在叶结点的卷无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+567) /*The operation is not valid on a leaf volume*/

    case NERR_DfsVolumeHasMultipleServers   :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               操作有岐义因为卷提供多重服务")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+568) /*The operation is ambiguous because the volume has multiple servers*/

    case NERR_DfsCantCreateJunctionPoint    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               不能创建一个连接点")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+569) /*Unable to create a junction point*/

    case NERR_DfsServerNotDfsAware          :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               分布式文件系统不能感知服务器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+570) /*The server is not Dfs Aware*/

    case NERR_DfsBadRenamePath              :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的目标路径无效")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+571) /*The specified rename target path is invalid*/

    case NERR_DfsVolumeIsOffline            :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的分布式文件系统卷没有联机")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+572) /*The specified Dfs volume is offline*/

    case NERR_DfsNoSuchServer               :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               指定的服务器不是该卷所在服务器")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+573) /*The specified server is not a server for this volume*/

    case NERR_DfsCyclicalName               :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               侦测到存在分布式文件系统名")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+574) /*A cycle in the Dfs name was detected*/

    case NERR_DfsNotSupportedInServerDfs    :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               基于服务器的分布式文件系统不支持此操作")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+575) /*The operation is not supported on a server-based Dfs*/

    case NERR_DfsInternalError              :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               分布式文件系统内部错")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+590) /*Dfs internal error*/

/*

 *  Net setup error codes.

 *

 *          NERR_BASE + (591-595)

 */

    case NERR_SetupAlreadyJoined            :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               计算机已经加入到一个域中")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+591) /*This machine is already joined to a domain.*/

    case NERR_SetupNotJoined                :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               计算机没有加入到一个域中")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+592) /*This machine is not currently joined to a domain.*/

    case NERR_SetupDomainController         :MessageBox(hwnd,AnsiString(AnsiString("错误 ")+AnsiString(IntToStr(err))+AnsiString(":               计算机是域的一个控制器,不能从域中移走")).c_str(),lpCaption,MB_APPLMODAL|MB_OK|MB_ICONWARNING);

         break;//(NERR_BASE+593) /*This machine is a domain controller and cannot be unjoined from a domain.*/

   }

  return err;

 }

21 窗口自适应。

假设你在800*600的分辨率下设计的form,第一步:

inplementation

const

  ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}

  ScreenHeight: LongInt = 600;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

  scaled := true;

  if (screen.width <> ScreenWidth) then

  begin

    height := longint(height) * longint(screen.height) div ScreenHeight;

    width := longint(width) * longint(screen.width) div ScreenWidth;

    scaleBy(screen.width, ScreenWidth);

  end;

end;

下一步,要让每个子控制的字体改变到合适的大小:

type

  TFooClass = class(TControl); { needed to get at protected }

                               { font property }

var

  i: integer;

begin

  for i := ControlCount - 1 downto 0 do

    TFooClass(Controls[i]).Font.Size :=

        (NewFormWidth div OldFormWidth) *

        TFooClass(Controls[i]).Font.Size;

end;

原创粉丝点击