//用ping测试主机是否存在
function PingAlive(const AHost:string;const ATimeout: Cardinal = 1000):boolean;
var
IdIcmpClient: TIdIcmpClient;
begin
try
IdIcmpClient := TIdIcmpClient.Create(nil);
IdIcmpClient.ReceiveTimeout := ATimeout; //设定回应的等候时间
IdIcmpClient.Host := AHost;
Result := true;
IdIcmpClient.Ping;
Result := (IdIcmpClient.ReplyStatus.ReplyStatusType = rsEcho);
finally
FreeAndNil(IdIcmpClient);
end;
end;
//win2000/XP 信使服务
function NetMessageBufferSend(servername:PWideChar;msgname:PWideChar;
fromname:PWideChar;buf:PWideChar;buflen:DWORD):DWORD;stdcall;
external ‘netapi32.dll‘ name ‘NetMessageBufferSend‘;
function ToUnicode(str:string;dest:PWideChar):integer;
var
len:integer;
begin
StringToWideChar(str,dest,len);
Result:=len;
end;
function SendMsg(Toh,From,Msg:string):integer;
var
ToName :array [0..64] of WideChar;
WMsgText:array [0..1000] of WideChar;
MsgLen, i:integer;
begin
for i := 0 to 64 do ToName[i] := #0;
ToUnicode(Toh,ToName);
for i := 0 to 1000 do WMsgText[i] := #0;
ToUnicode(Msg,WMsgText);
Result:=NetMessageBufferSend(nil,ToName,nil,@WMsgText,MsgLen);
end;