[Back to NETWORK SWAG index] [Back to Main SWAG index] [Original]
Program Novell_API_Examples;
{ Misc. Novell Advanced Netware 2.1+ API examples to retrieve info on the
user who is running this program
}
USES DOS, CRT;
CONST
HexDigit: array [0..15] of char = '0123456789ABCDEF';
Days_Of_Week : Array[0..6] of string = ('Sunday','Monday','Tuesday',
'Wednesday','Thursday','Friday',
'Saturday');
TYPE
string2 = STRING[2];
string4 = STRING[4];
VAR
Reg : DOS.Registers;
RCode : Integer;
Connect : Byte;
Address : String;
function HexByte(B: byte): string2;
begin
HexByte := HexDigit[B shr 4] + HexDigit[B and $F];
end;
function Hex(I: integer): string4;
begin
Hex := HexByte(hi(I)) + HexByte(lo(I));
end;
Function Get_Connection_Number : Integer;
{ |
| Returns the connection number for the current session
|
}
begin
Reg.AH := $DC;
intr($21,Reg);
Get_Connection_Number := Reg.AL;
end;
Function Get_Station_Address(var Address: String): Integer;
{ |
| Returns the Physical Station Address (NIC Number)
|
}
var
S1, S2, S3 : String;
begin
Reg.AH := $EE;
intr($21,Reg);
Address := Hex(Reg.CX) + Hex(Reg.BX) + Hex(Reg.AX);
Get_Station_Address := $00;
end;
Function Get_Login_Name : String;
{ |
| Who's calling?
|
}
var
Reg : DOS.REGISTERS;
Loop,
Connection : Byte;
TmpStr : String;
Request_Buf : Record
BufLen : Integer;
SubFunc : Byte;
Connection : Byte;
end;
Reply_Buf : Record
BufLen : Integer;
Obj_ID : LongInt;
Obj_Type : Integer;
Obj_Name : Array[1..48] of char;
Login_Time : Record
Year : Byte;
Month : Byte;
Day : Byte;
Hour : Byte;
Minute : Byte;
Second : Byte;
Day_No : Byte;
end;
end;
begin
TmpStr := '';
RCode := 0;
Connect := Get_Connection_Number;
fillchar(Request_Buf,sizeof(Request_Buf),0);
fillchar(Reply_Buf,sizeof(Reply_Buf),0);
Request_Buf.SubFunc := $16;
Request_Buf.Connection := Connect;
Request_Buf.BufLen := sizeof(Request_Buf);
Reply_Buf.BufLen := sizeof(Reply_Buf);
Reg.AH := $E3;
Reg.DS := seg(Request_Buf);
Reg.SI := ofs(Request_Buf);
Reg.ES := seg(Reply_Buf);
Reg.DI := ofs(Reply_Buf);
intr($21,Reg);
Loop := 1;
while ((Reply_Buf.Obj_Name[Loop] <> #0) and (Loop <= 48)) do
begin
TmpStr := TmpStr + Reply_Buf.Obj_Name[Loop];
inc(loop);
end;
Get_Login_Name := TmpStr;
end;
Procedure Pause;
var
ch : char;
begin
writeln;
write('Press Any Key To Continue ');
ch := readkey;
writeln;
end;
BEGIN
clrscr;
writeln('Get Novell Station Info - (C) Rick Ryan, 1989');
writeln;
Connect := Get_Connection_Number;
Writeln(' Connection ID: ', Connect);
RCode := Get_Station_Address(Address);
writeln('Station Address: ',Address,' With ErrCode of ', RCode);
writeln('Login Name = ',Get_Login_Name);
Pause;
END.
[Back to NETWORK SWAG index] [Back to Main SWAG index] [Original]