[Back to NETWORK SWAG index]  [Back to Main SWAG index]  [Original]

{
±i'm trying to find a method by which i can, from within a TP Program,
±detect whether or not the NetWare shell has been loaded (Net3, NetX, or
±whatever); i've figured out how to determine if IPX is running, but
±can't seem to nail down the shell; the general idea is to detect IPX,
±detect the shell, determine whether or not the user is logged in, and if
±not, give them the oppurtUnity to do so; i've got most of the rest
±figured out, but can't find the shell; any help would be greatly
±appreciated

Try Interrupt 21h, Function EAh, GetShellVersion;
}

Uses
  {$IFDEF DPMI}
  WinDos;
  {$ELSE}
  Dos;
  {$endIF}
Var
  vOS,
  vHardwareType,
  vShellMajorVer,
  vShellMinorVer,
  vShellType,
  vShellRevision  : Byte;
  {$IFDEF DPMI}
  vRegs : tRegisters;
  {$ELSE}
  vRegs : Registers;
  {$endIF}

Procedure GetShellVersion;
begin
  vOS            := 0;
  vHardwareType  := 0;
  vShellMajorVer := 0;
  vShellMinorVer := 0;
  vShellType     := 0;
  vShellRevision := 0;
  FillChar(vRegs, SizeOf(vRegs), 0);
  With vRegs DO
  begin
    AH := $EA;
    Intr($21, vRegs);
    vOS := AH;              (* $00 = MS-Dos *)
    vHardwareType := AL;    (* $00 = PC, $01 = Victor 9000 *)
    vShellMajorVer := BH;
    vShellMinorVer := BL;
    vShellType := CH;       (* $00 = conventional memory *)
                            (* $01 = expanded memory     *)
                            (* $02 = extended memory     *)
    vShellRevision := CL;
  end;
end;

begin
  GetShellVersion;
  Writeln(vOS);
  Readln;
end.

[Back to NETWORK SWAG index]  [Back to Main SWAG index]  [Original]