如何在DELPHI程序中取得Windows 2000 SERVER的DATETIME?(不用SQL,难道这问题没解,失望[:(]) (100分)

  • 主题发起人 主题发起人 jarvis100
  • 开始时间 开始时间
J

jarvis100

Unregistered / Unconfirmed
GUEST, unregistred user!
1.如何在DELPHI程序中取得SERVER的DAY & TIME?
2.如何利用SOCKET发送广播消息?(要求是对方不需要安装什么软件,只要自己有一个发送程序,对方就可以接收到)
3.有关Net send 使用的问题——如何匿名发送消息?(这是 http://www.delphibbs.com/delphibbs/dispq.asp?lid=1119962 贴里面的,我也想要一份例子代码,还有在DELPHI里怎么实现)
谁能给我上面问题的解决代码?先谢谢了!
 
1.select getdate()
3.问题可以给我一份吗? lin_kezhi@163.com
 
不能通过MS SQL SERVER获得,我要的是如果对方电脑不装SQL SERVER呢
 
1:Indy控件组中有取server时间的控件!

3:
net send 匿名好像使用了netapi32.dll!你可以搜一下!
 
还有人可以告许我吗?急要中啊,帮个忙吧,谢谢了
 
1.如何在DELPHI程序中取得SERVER的DAY & TIME?(不通过MS SQL SERVER获得,我要的是如果SERVER没装SQL SERVER呢,如何通过SOCKET或其它什么去获得SERVER的日期时间,答复出来的即刻给分,分不够可以加上另开贴再给100分,急需)
 
同意 oldsheep35 ,用 iddaytime 控件。
 
用 iddaytime 控件如何实现连接SERVER及取得它的DATETIME,我的电脑是不在那个域里的,但我要取那台SERVER的日期时间
 
可以给相关实现代码吗?谢谢了
 
1. NET TIME //服务器名 用DOS SHELL取。。 可能有更好的。
2. 要广播消息又想工作站不装,只有用如NET SEND之类的消息了。
3. 这与第2个相同,不过建义你不要用 NET SEND ,API函数中,有一个这样的函数,有一系列的参数。好像可以实现。
 
TO: del520
1. NET TIME //服务器名 用DOS SHELL取。。 可能有更好的。
这个怎么取回返回来的值呢?请指教
 
1.winexec('net time //(ip or machinename) /set /yes',sw_hide)
先取出本地时间,在将本地时间设成服务器时间,然后再去本地时间,即可。只是此方法有很多问题,比如说对方开防火墙,或者不愿改动本地时间等。
 
server 开time service!
如何利用SOCKET发送广播消息 采用Ms message就可以了,针对win2000或以上有效!
 
function NetMessageBufferSend(servername: PWideChar;
MsgName: PWideChar;
FromName: PWideChar;
Buf: PWideChar;
var BufLen: Dword): integer; stdcall; external 'netapi32.dll';

使用例子:
if NetMessageBufferSend(nil
, @WideString(edit2.text)[1]
, @WideString(Edit1.Text)[1]
, @WideString(edit3.text)[1]
, MsgLen) <> 0 then
Application.MessageBox(PChar('抱歉,Messenger 无法发送至 ' + Trim(sl[iDestCount])), '提示', mb_iconwarning);
 
续: 使用前提是对方没有关闭messenger服务
 
TO: shangshang
我试过,出来如下错误
Access violation at address 75111C0F in module 'netapi32.dll',Write of address 510537D2
请问这是什么原因,请指点一下
 
转贴他人的资料加本人注释:希望能解决该问题,呵呵~~~~~~~~

用这句启动对方时间服务:Winexec( 'C:/windows/net time ////servername /set /yes)
///////////////////////////////////////////////
PTime_Of_Day_Info = ^TTime_Of_Day_Info;
TTime_Of_Day_Info = record //获得的格式
tod_elapsedt :Integer;
tod_msecs :Integer;
tod_hours :Integer;
tod_mins :Integer;
tod_secs :Integer;
tod_hunds :Integer;
tod_timezone :LongInt;
tod_tinterval :Integer;
tod_day :Integer;
tod_month :Integer;
tod_year :Integer;
tod_weekday :Integer;
end;

function NetRemoteTOD(ServerName :PWideChar; var buffer :pointer) :Integer; stdcall; external 'netapi32.dll'; //外部函数也是最关键函数
function NetApiBufferFree(buffer : Pointer) :Integer; stdcall; external 'netapi32.dll';

function TNTRemoteDateTime.GetTOD(ServerName: WideString): Integer;//获取函数
var Buffer :pointer;
Rek :PTime_Of_Day_Info;
ADate, ATime FinalTime :TDateTime;
THours, TMins, TSecs, TMSecs :Word;
TYear, TMonth, TDay :Word;
begin
result:=NetRemoteTOD(PWideChar(ServerName), Buffer);
if result=0 then
begin
Rek:=PTime_Of_Day_Info(Buffer);
FServerName :=ServerName;
FElapseDt :=Rek.tod_elapsedt;
FMSecs :=Rek.tod_msecs;
FHours :=Rek.tod_hours;
FMins :=Rek.tod_mins;
FSecs :=Rek.tod_secs;
FHunds :=Rek.tod_hunds;
FTInterval :=Rek.tod_tinterval;
If Rek.tod_timezone <> -1 then
begin
FTimeZone:=Rek.tod_timezone div 60;
end
else
FTimeZone:=0;
FDay :=Rek.tod_day;
FMonth :=Rek.tod_month;
FYear :=Rek.tod_year;
FWeekDay :=Rek.tod_weekday;
ADate:=EncodeDate(FYear, FMonth, FDay);
ATime:=EnCodeTime(FHours, FMins, FSecs, FHunds);
FinalTime:=StrToDateTime(DateTimeToStr(ADate) + ' ' + TimeToStr(ATime));
FinalTime:=FinalTime - (FTimeZone / 24);
decodetime(FinalTime,THours, TMins,TSecs, TSecs);
FHours:=Integer(THours);
decodeDate(FinalTime,TYear, TMonth,TDay);
FYear:=Integer(TYear);
FMonth:=Integer(TMonth);
FDay:=Integer(TDay);
end;
NetApiBufferFree(Buffer);
end;
 
TO: Netsoft
谢谢你的代码,正好合我意

也谢谢各位的关注及回答,这贴就结了吧
 
多人接受答案了。
 
后退
顶部