窗口问题。。。

qucon 2004-07-29 08:48:27
1我主控界面是多文档主窗口,现在我想写一个dll子窗口,该怎么做我才能调用这个子窗口口?
如何取得服务器时间?
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qucon 2004-07-29
  • 打赏
  • 举报
回复
调用dll编写的多文档子窗体,主窗体是我的主控界面
aiirii 2004-07-29
  • 打赏
  • 举报
回复
取远程机器日期时间
unit Unit3;

interface

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

type
TTODInfo = record
ElapsedTime: Integer; {number of seconds since 00:00:00 January 1, 1970}
Milliseconds: Integer; {number of milliseconds since last system reset}
Hours: Integer; {current hour (0-23)}
Minutes: Integer; {current minute (0-59)}
Seconds: Integer; {current second (0-59)}
Hunds: Integer; {current hundredth of a second (0-99)}
TimeZone: Integer; {time against GMT in minutes}
{west of Greenwich gives positive, east negative values}
{value of -1 means undefined time zone}
Interval: Integer; {clock tick interval in ten-thousandth of a second (0.0001 s)}
Day: Integer; {day of the month (1-31)}
Month: Integer; {month of the year (1-12)}
Year: Integer; {year}
Weekday: Integer; {day of the week (0-6) 0 = Sunday, 1 = Monday etc.}
end;
PTODInfo = ^TTODInfo;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
const
netapi32 = 'netapi32.dll';

function NetApiBufferFree(Buffer: Pointer): Integer; stdcall;
function NetRemoteTOD(UNCServerName: PWideChar; Info: Pointer): Integer; stdcall;

function ServerTime(const UNCServer: string; var Stamp: TDateTime): Integer;

implementation

{$R *.dfm}

function NetApiBufferFree; external netapi32 name 'NetApiBufferFree';
function NetRemoteTOD; external netapi32 name 'NetRemoteTOD';

function ServerTime(const UNCServer: string; var Stamp: TDateTime): Integer;
var
ServerName: PWideChar;
tod: PTODInfo;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
GetMem(ServerName, (Length(UNCServer) + 1) * SizeOf(WideChar));
try
ServerName := StringToWideChar(UNCServer, ServerName, Length(UNCServer) + 1);
Result := NetRemoteTOD(ServerName, @tod);
if Result = 0 then
begin
try
Year := tod^.Year;
Month := tod^.Month;
Day := tod^.Day;
Hour := tod^.Hours;
Min := tod^.Minutes;
Sec := tod^.Seconds;
MSec := tod^.Hunds * 10;
if tod^.TimeZone = -1 then {undefined timezone}
Stamp := EncodeDate(Year, Month, Day) +
EncodeTime(Hour, Min, Sec, MSec)
else
Stamp := EncodeDate(Year, Month, Day) +
EncodeTime(Hour, Min, Sec, MSec) - (tod^.TimeZone / 1440);
finally
NetApiBufferFree(tod);
end;
end;
finally
FreeMem(ServerName);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
t: TDateTime;
begin
ServerTime('server', t);
label1.Caption := DateTimeToStr(t);
end;

end.
cdhuanglei 2004-07-29
  • 打赏
  • 举报
回复
dll子窗体网上有许多示例,我手头没有。

取服务器时间可以研究一下授时服务
wizardqi 2004-07-29
  • 打赏
  • 举报
回复
//dll部分例子
library Dll;
uses
SysUtils,
Classes,
DllUnit in 'DllUnit.pas' {Form1};

{$R *.RES}
function CreateDllForm(AWoner:TComponent):Pointer; stdcall;
begin
Result:=TForm1.Create(AWoner);
end;
exports
CreateDllForm;
begin
end.
//调用方例子
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,DllUnit;

type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

function CreateDllForm(AWoner:TComponent):Pointer;stdcall external 'Dll.Dll';
implementation

{$R *.DFM}

procedure TForm2.Button1Click(Sender: TObject);
var
a:TForm1;
begin
a:=CreateDllForm(Application);
a.Show;
end;

end.
shenfeng126414 2004-07-29
  • 打赏
  • 举报
回复
取服务器时间用SQL语句:'select getdate()'

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧