Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Shut Down - winSys.pas

winSys.pas

Caricato da: Phi
Scarica il programma completo

  1. { $Id: gplunit.pt,v 1.2 2002/09/07 15:40:47 peter Exp 2010/04/30 20:23:14 peter Exp $
  2.    This file is part of ShutDown
  3.    Copyright (c) 2010 by Phi
  4.  
  5.    WinSys Unit
  6.  
  7.    See the file COPYING.FPC, included in this distribution,
  8.    for details about the copyright.
  9.  
  10.    This program is distributed in the hope that it will be useful,
  11.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  13. **********************************************************************}
  14. //COMPILATO CON FREE PASCAL
  15.  
  16. unit winSys;
  17.  
  18. interface
  19.  
  20. uses windows;
  21.  
  22. Function Spegni(Param: Longword): Boolean;export;
  23. function cartelle(Codice : smallint) : string;export;
  24.  
  25. Const
  26.   CSIDL_PROGRAMS                = $0002; { %SYSTEMDRIVE%\Program Files                                      }
  27.   CSIDL_PERSONAL                = $0005; { %USERPROFILE%\My Documents                                       }
  28.   CSIDL_FAVORITES               = $0006; { %USERPROFILE%\Favorites                                          }
  29.   CSIDL_STARTUP                 = $0007; { %USERPROFILE%\Start menu\Programs\Startup                        }
  30.   CSIDL_RECENT                  = $0008; { %USERPROFILE%\Recent                                             }
  31.   CSIDL_SENDTO                  = $0009; { %USERPROFILE%\Sendto                                             }
  32.   CSIDL_STARTMENU               = $000B; { %USERPROFILE%\Start menu                                         }
  33.   CSIDL_MYMUSIC                 = $000D; { %USERPROFILE%\Documents\My Music                                 }
  34.   CSIDL_MYVIDEO                 = $000E; { %USERPROFILE%\Documents\My Videos                                }
  35.   CSIDL_DESKTOPDIRECTORY        = $0010; { %USERPROFILE%\Desktop                                            }
  36.   CSIDL_NETHOOD                 = $0013; { %USERPROFILE%\NetHood                                            }
  37.   CSIDL_TEMPLATES               = $0015; { %USERPROFILE%\Templates                                          }
  38.   CSIDL_COMMON_STARTMENU        = $0016; { %PROFILEPATH%\All users\Start menu                               }
  39.   CSIDL_COMMON_PROGRAMS         = $0017; { %PROFILEPATH%\All users\Start menu\Programs                      }
  40.   CSIDL_COMMON_STARTUP          = $0018; { %PROFILEPATH%\All users\Start menu\Programs\Startup              }
  41.   CSIDL_COMMON_DESKTOPDIRECTORY = $0019; { %PROFILEPATH%\All users\Desktop                                  }
  42.   CSIDL_APPDATA                 = $001A; { %USERPROFILE%\Application Data (roaming)                         }
  43.   CSIDL_PRINTHOOD               = $001B; { %USERPROFILE%\Printhood                                          }
  44.   CSIDL_LOCAL_APPDATA           = $001C; { %USERPROFILE%\Local Settings\Application Data (non roaming)      }
  45.   CSIDL_COMMON_FAVORITES        = $001F; { %PROFILEPATH%\All users\Favorites                                }
  46.   CSIDL_INTERNET_CACHE          = $0020; { %USERPROFILE%\Local Settings\Temporary Internet Files            }
  47.   CSIDL_COOKIES                 = $0021; { %USERPROFILE%\Cookies                                            }
  48.   CSIDL_HISTORY                 = $0022; { %USERPROFILE%\Local settings\History                             }
  49.   CSIDL_COMMON_APPDATA          = $0023; { %PROFILESPATH%\All Users\Application Data                        }
  50.   CSIDL_WINDOWS                 = $0024; { %SYSTEMROOT%                                                     }
  51.   CSIDL_SYSTEM                  = $0025; { %SYSTEMROOT%\SYSTEM32 (may be system on 95/98/ME)                }
  52.   CSIDL_PROGRAM_FILES           = $0026; { %SYSTEMDRIVE%\Program Files                                      }
  53.   CSIDL_MYPICTURES              = $0027; { %USERPROFILE%\My Documents\My Pictures                           }
  54.   CSIDL_PROFILE                 = $0028; { %USERPROFILE%                                                    }
  55.   CSIDL_PROGRAM_FILES_COMMON    = $002B; { %SYSTEMDRIVE%\Program Files\Common                               }
  56.   CSIDL_COMMON_TEMPLATES        = $002D; { %PROFILEPATH%\All Users\Templates                                }
  57.   CSIDL_COMMON_DOCUMENTS        = $002E; { %PROFILEPATH%\All Users\Documents                                }
  58.   CSIDL_COMMON_ADMINTOOLS       = $002F; { %PROFILEPATH%\All Users\Start Menu\Programs\Administrative Tools }
  59.   CSIDL_ADMINTOOLS              = $0030; { %USERPROFILE%\Start Menu\Programs\Administrative Tools           }
  60.   CSIDL_COMMON_MUSIC            = $0035; { %PROFILEPATH%\All Users\Documents\my music                       }
  61.   CSIDL_COMMON_PICTURES         = $0036; { %PROFILEPATH%\All Users\Documents\my pictures                    }
  62.   CSIDL_COMMON_VIDEO            = $0037; { %PROFILEPATH%\All Users\Documents\my videos                      }
  63.   CSIDL_CDBURN_AREA             = $003B; { %USERPROFILE%\Local Settings\Application Data\Microsoft\CD Burning }
  64.   CSIDL_PROFILES                = $003E; { %PROFILEPATH%                                                    }
  65.  
  66. implementation
  67.  
  68. var
  69. dir : string;
  70. dirP : Pchar;
  71.  
  72. Function Spegni(Param: Longword): Boolean;export;
  73. var
  74.  TTokenHd: THandle;
  75.  TTokenPvg: TTokenPrivileges;
  76.  cbtpPrevious: DWORD;
  77.  rTTokenPvg: TTokenPrivileges;
  78.  pcbtpPreviousRequired: DWORD;
  79.  tpResult: Boolean;
  80. const
  81.  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
  82. begin
  83.  tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd) ;
  84.  if tpResult then begin
  85.   tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid) ;
  86.   TTokenPvg.PrivilegeCount := 1;
  87.   TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  88.   cbtpPrevious := SizeOf(rTTokenPvg) ;
  89.   pcbtpPreviousRequired := 0;
  90.   if tpResult then Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg, cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired);
  91.  end;
  92.  Spegni:= ExitWindowsEx(Param, 0) ;
  93. end;
  94.  
  95. Function SHGetFolderPath (Ahwnd: HWND; Csidl: Integer; Token: THandle; Flags: DWord; Path: PChar): HRESULT; stdcall; external 'SHFolder.dll' name 'SHGetFolderPathA';
  96.  
  97. function cartelle(Codice : smallint) : string;export;
  98. begin
  99.  dirP := nil;
  100.  dir := dirP;
  101.  if SHGetFolderPath(0,Codice,0,0,@dir) = 0 then begin
  102.   dirP := @dir;
  103.   dir := dirP;
  104.  end else dir := '?';
  105.  cartelle := dir;
  106. end;
  107.  
  108. END.