Poslao: 14 Apr 2007 10:36
|
offline
- Pridružio: 24 Feb 2007
- Poruke: 167
- Gde živiš: Babusnica
|
Zasto ovaj kod nece da radi u Delphi-ju 4?
function WindowsExit(RebootParam: Longword): Boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd) ;
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid) ;
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg) ;
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired) ;
end;
end;
Result := ExitWindowsEx(RebootParam, 0) ;
end;
Usage:
//Shutdown
WindowsExit(EWX_POWEROFF or EWX_FORCE) ;
//Reboot Windows
WindowsExit(EWX_REBOOT or EWX_FORCE) ;
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 14 Apr 2007 15:00
|
offline
- Strog
- Stručni saradnik
Web programiranje
- Bojan Kopanja
- Web & Mobile developer @ ZeusSoftware
- Pridružio: 26 Jul 2003
- Poruke: 2597
- Gde živiš: Stara Pazova
|
Pa ne znam... Delphi 4 je stvarno star delphi i vrlo je moguce da u njemu nema nesto od potrebnih funkcija posto se ovde radi o kodu za gasenje Win200-XP-a za koji nisam siguran ni da su postojali kad je bio D4 .
Nabavi bar Delphi 7 koji je po mom skromnom misljenju ( a i misljenju mnogih drugih, mnogo kompetentnijih ljudi od mene ) najbolji Delphi pre .NET-a.
Kod mene ovaj kod radi bez greske i u Delphiju 7 i u Turbo Delphiju!
|
|
|
|
Poslao: 14 Apr 2007 15:02
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Nemam instaliran Delphi 4 da bih mogao da vidim sta je... a i ti nisi rekao nista o problemu?
Da li se program iskompajlira? Da li funkcija frati neku gresku? Da li dobijes av?
Vrlo je moguce da koristis neke Win API funkcije i konstante koje nisu postojale kada je napravljen Delphi 4.
Dopuna: 14 Apr 2007 15:02
@Strog:
Pretece me za stotinku
|
|
|
|
Poslao: 14 Apr 2007 19:07
|
offline
- Pridružio: 24 Feb 2007
- Poruke: 167
- Gde živiš: Babusnica
|
Kompejlira se, ne prijavljuje gresku, ali nece da radi.
|
|
|
|
Poslao: 14 Apr 2007 19:15
|
offline
- beli0135
- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
dodjes kursorom na liniju ispod Begin, udaris F5. Linija se zacrveni, onda startujes program sa F9, i kad stane na toj liniji, ides F8 liniju po liniju...
Ako ne uradis to, onda jedino da bacis pasulj na ogledalce i izgovaras charobne rechi.
|
|
|
|
Poslao: 14 Apr 2007 19:17
|
offline
- loshmi_sr
- Građanin
- Pridružio: 08 Jan 2007
- Poruke: 279
- Gde živiš: Srbija
|
Probaj, Windows API:
//reboot windows
ExitWindowsEx(EWX_REBOOT, 0) ;
//shut down windows
ExitWindowsEx(EWX_SHUTDOWN, 0) ;
// log off and prompt for login
ExitWindowsEx(EWX_LOGOFF, 0) ;
|
|
|
|
Poslao: 14 Apr 2007 19:21
|
offline
- bobby
- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
Da bi ti Windows dodelio privilegije koje trazis u tom parcetu koda, moras da budes ulogovan kao admin na sistemu.
Daj i ostatak koda, odakle pozivas ovu funkciju, da vidimo da nije tamo greska.
@loshmi_sr
Pa upravo je to gore koristio. Ne mozes tek tako da pozoves te API funkcije, moras prvo da obezbedis privilegiju tokenu (funkciji ili proceduri u kojoj pozivas taj API).
|
|
|
|
Poslao: 14 Apr 2007 19:32
|
offline
- loshmi_sr
- Građanin
- Pridružio: 08 Jan 2007
- Poruke: 279
- Gde živiš: Srbija
|
@bobby
Ispravka, u pravu si, mislio sam na ovo:
...
uses ShellApi;
...
ShellExecute(Handle, 'Open', PChar('shutdown'), PChar('-s -t 00'), nil, SW_HIDE);
|
|
|
|
Poslao: 15 Apr 2007 14:34
|
offline
- Pridružio: 24 Feb 2007
- Poruke: 167
- Gde živiš: Babusnica
|
Hebih da pozivam shutdown, nervira me ono prozorce.
|
|
|
|
Poslao: 15 Apr 2007 20:38
|
offline
- LittleHacker
- Ugledni građanin
- Pridružio: 13 Apr 2007
- Poruke: 452
- Gde živiš: Beograd
|
Meni neradi u Delphi 7!!!!Neprepoznaje 'Usage'!!!!
function WindowsExit(RebootParam: Longword): Boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd) ;
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid) ;
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg) ;
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired) ;
end;
end;
Result := ExitWindowsEx(RebootParam, 0) ;
end;
// <===========================;
Usage:
// <===========================;
Shutdown
WindowsExit(EWX_POWEROFF or EWX_FORCE) ;
//Reboot Windows
WindowsExit(EWX_REBOOT or EWX_FORCE) ;
[mod by bobby] postavio sam CODE tagove
|
|
|
|