home *** CD-ROM | disk | FTP | other *** search
/ Chip: Shareware for Win 95 / Chip-Shareware-Win95.bin / ostatni / delphi / delphi2 / wowsrc.exe / GLOBALS.PAS < prev    next >
Pascal/Delphi Source File  |  1996-03-28  |  9KB  |  189 lines

  1. unit Globals;
  2.  
  3. interface
  4.  
  5. Uses WinProcs, WinTypes, Messages,Classes, Graphics, IniFiles;
  6.  
  7. Const
  8.   OT_USER = 1;
  9.  
  10. Var
  11.   SsType     : Integer;
  12.   iObjL : Integer;                                         { Current Object LEFT position }
  13.   iObjR : Integer;                                         { Current Object RIGHT position }
  14.   iObjT : Integer;                                         { Current Object TOP position }
  15.  
  16.   MsgFont  : TFont;                                        { Message Font }
  17.   MsgText  : String;                                       { Message Text }
  18.   BkGrnd   : TColor;                                       { Background Colour }
  19.   Speed    : Integer;                                      { Speed }
  20.   CntrText : Boolean;                                      { Center Text }
  21.   AppTitle   : String;                                     { Current screen saver title }
  22.   Pwd        : String;                                     { Password }
  23.   PwdType    : Integer;                                    { Type of password }
  24.   TestMode   : Boolean;                                    { True if testing }
  25.   LoopsMs    : LongInt;                                    { Ms loops }
  26.   OverPwd    : String;                                     { Overide password for WINDOWS }
  27.   szUserName : array [0..50] of Char;                      { User Name }
  28.   szFsName   : array [0..50] of Char;                      { File server Name }
  29.   FullName   : String;                                     { Full User Name }
  30.   Fg, Bg     : Integer;                                    { Foregound and Backgrpund index }
  31.   ScreenWd   : Integer;                                    { Screen width }
  32.   ScreenHt   : Integer;                                    { Screen Height }
  33.   SsDelay    : Integer;                                    { Delay }
  34.  
  35.   BallMax    : Integer;                                    { Max Spheres B4 clear screen }
  36.   BallSize   : Integer;                                    { Max Sphere Size }
  37.  
  38.   SpotSize   : Integer;                                    { Spotlight Size }
  39.   SpotSpeed  : Integer;                                    { Spotlight Speed }
  40.  
  41.   DelayInit  : Boolean;                                    { True if delay loop initiated }
  42.  
  43. Procedure ReadDefaults;
  44.  
  45. Procedure Delay(Ms : Integer);                             { Delay for Ms Millsecs }
  46. Procedure GetUserFsName;                                   { Get User and File server Name }
  47.  
  48. Procedure CursorOff;                                       { Turn the cursor Off }
  49. Procedure CursorOn;                                        { Turn the Cursor On }
  50.  
  51. {$IFDEF NOVELL}
  52.  
  53. Function GetConnectionNumber : Integer;                    { Get novell connection number }
  54. Function GetConnectionInformation(ConId : LongInt;
  55.                                   UserName : PChar;
  56.                                   Var ObjType : Integer;
  57.                                   Var ObjID : LongInt;
  58.                           LoginTime : PChar) : Integer;    { Get Novell connection info }
  59. Function GetDefaultConnectionID : Integer;                 { Get Novell Default Connection ID }
  60. Function GetFileServerName(DefConID : LongInt;
  61.                            FsName : PChar) : Integer;      { Get Novell File server Name }
  62. Function ReadPropertyValue(szUserName : PChar;
  63.                            ObjType : Integer;
  64.                            szPropName : PChar;
  65.                            SegNum :  Integer;
  66.                            szLongName : PChar;
  67.                            Var iMoreSegs : Char;
  68.                        Var iMoreFlags : Char) : Integer;   { Read a Novell property Value }
  69. {$ENDIF}
  70. implementation
  71.  
  72. Uses
  73.   SysUtils,
  74.   Toolhelp;
  75.  
  76. {$IFDEF NOVELL}
  77. Function GetConnectionNumber;      external 'NWNETAPI';
  78. Function GetConnectionInformation; external 'NWNETAPI';
  79. Function GetDefaultConnectionID;   external 'NWNETAPI';
  80. Function GetFileServerName;        external 'NWNETAPI';
  81. Function ReadPropertyValue;        external 'NWNETAPI';    { Declare novell calls }
  82. {$ENDIF}
  83. Procedure CursorOff;                                       { Turn the Cursor Off }
  84. Var
  85.   Cstate : Integer;                                        { Current cursor State }
  86. Begin
  87.   Cstate := ShowCursor(True);                              { Get State }
  88.   While Cstate >= 0 do Cstate := ShowCursor(False);        { While ON turn Off }
  89. End;
  90.  
  91. Procedure CursorOn;                                        { Turn Cursor On }
  92. Var
  93.   Cstate : Integer;                                        { Current cursor State }
  94. Begin
  95.   Cstate := ShowCursor(True);                              { Get current State }
  96.   While Cstate < 0 do Cstate := ShowCursor(True);          { While off turn on }
  97. End;
  98.  
  99. Procedure GetUserFsName;                                   { Get a Novell User Name  and FS Name }
  100. Var
  101.   iDefConID : LongInt;                                     { Default connection id }
  102.   iRc, iOtype : Integer;                                   { Return and Object Type }
  103.   iOID : LongInt;                                          { Object Id }
  104.   szLoginTime : array [0..9] of Char;                      { Login Time }
  105.   szFullName  : array [0..127] of Char;                    { Fill Name }
  106.   iMoreSegs, iMoreFlags : Char;                            { Local Flags }
  107. Begin
  108.   szUserName[0] := #0;                                     { Null User Name }
  109.   szFsName[0] := #0;                                       { Null FS name }
  110.   FullName := '';                                          { Zap Full Name }
  111. {$IFDEF NOVELL}
  112.   iDefConID := GetConnectionNumber;                        { Get connection Number }
  113.   iRc := GetConnectionInformation(iDefConID,
  114.                                   @szUserName[0],
  115.                                   iOtype,iOID,
  116.                                   szLoginTime);            { Get connection info }
  117.   if szUserName[0] = #0 then Exit;                         { If No User Name, No Net thus exit }
  118.   iDefConId := GetDefaultConnectionID;                     { Get default connection ID }
  119.   iRc := GetFileServerName(iDefConID,szFsName);            { Get FS name }
  120.   iRc := ReadPropertyValue(szUserName,iOtype,
  121.                            'IDENTIFICATION',1,
  122.                            szFullName,iMoreSegs,
  123.                            iMoreFlags);                    { Get the full Name }
  124.   FullName := StrPas(szFullName);                          { Set the Full Name }
  125. {$ENDIF}
  126. end;
  127.  
  128. Procedure Delay(Ms : Integer);                             { Delay for Ms millisecs }
  129.                                                            {If Ms is passed as 0, then calibrate }
  130. Var
  131.   L,MaxLoops,StartL,EndL,Down,Up,Res : LongInt;            { Local Vars }
  132.   Ti  : TTimerInfo;
  133. Begin
  134.   Up := 0;
  135.   Down := 100000;
  136.   if Not DelayInit then begin
  137.     Ti.dwSize := sizeof(LongInt) * 3;
  138.     TimerCount(@Ti);
  139.       StartL := Ti.dwmsSinceStart;                                { Get Start Time }
  140.     if Not DelayInit then begin                            { Include the Test }
  141.       for L := 0 to 100000 do begin                        { Loop through the following 100000 times }
  142.         Dec(Down);                                         { Drop it }
  143.         Res := Abs(Down - Up);                             { Diff }
  144.         if Res = 0 then Inc(Res);                          { Bump }
  145.         Inc(Up);                                           { Inc }
  146.         end;
  147.       end;
  148.     TimerCount(@Ti);
  149.     EndL := Ti.dwmsSinceStart;                                { Get Start Time }
  150.         LoopsMs := 100000 Div (EndL - StartL);                 { Calc MS Rate }
  151.     DelayInit := True;                                     { We are done }
  152.         end
  153.     else begin
  154.     if Ms = 0 then Exit;
  155.         MaxLoops := LoopsMs * Ms;                              { Get Number of Loops }
  156.         for L := 0 to MaxLoops do Begin                        { Loop through }
  157.             Dec(Down);                                           { Drop it }
  158.             Res := Abs(Down - Up);                               { Diff }
  159.             if Res = 0 then Inc(Res);                            { Bump }
  160.             Inc(Up);                                             { Inc }
  161.       end
  162.     end;
  163. End;
  164.  
  165. Procedure ReadDefaults;                                    { Read Defaults }
  166. Var
  167.   Ini        : TIniFile;
  168.  
  169. Begin
  170.   DelayInit := False;                                      { Delay not Initialised }
  171.   GetUserFsName;                                           { Get the User/Fs Name }
  172.   Ini := TIniFile.Create('Wow.INI');                   { Open the Ini File }
  173.   OverPwd := '7Zld^0+\sm)x7y,a-h){,m';                     { Set the Over ride password }
  174.   Pwd := Ini.ReadString('ScreenSaver','Password','');      { Read the Password }
  175.   SsType := Ini.ReadInteger('Wow','SsType',0);     { Read which Saver }
  176.   Ini.Free;                                                { Close It }
  177.   SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT,
  178.                        0,
  179.                        @SsDelay,0);                        { Read the Delay }
  180.  
  181.   if SsDelay > 0 then SsDelay := SsDelay Div 60;           { Get Minutes }
  182.   if SsDelay = 0 then SsDelay := 1;                        { JIC an awkward Number }
  183. end;
  184.  
  185.  
  186.  
  187.  
  188. end.
  189.