Problem sa kodom za gasenje

1

Problem sa kodom za gasenje

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.
offline
  • Strog  Male
  • 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 Very Happy.

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!



offline
  • 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 Smile

offline
  • Pridružio: 24 Feb 2007
  • Poruke: 167
  • Gde živiš: Babusnica

Kompejlira se, ne prijavljuje gresku, ali nece da radi.

offline
  • Emil Beli
  • 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.

offline
  • 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) ;

offline
  • 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).

offline
  • 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);

offline
  • Pridružio: 24 Feb 2007
  • Poruke: 167
  • Gde živiš: Babusnica

Hebih da pozivam shutdown, nervira me ono prozorce.

offline
  • 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

Ko je trenutno na forumu
 

Ukupno su 1375 korisnika na forumu :: 32 registrovanih, 4 sakrivenih i 1339 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, babaroga, Brana01, ccoogg123, darkangel, Dimitrise93, DonRumataEstorski, dragoljub11987, Fabius, Goran 0000, hyla, ikan, jackreacher011011, Kruger, Kubovac, kybonacci, Leonov, Mcdado, Mercury, milutin134, minmatar34957, mnn2, nenad81, NoOneEver Dreams, oldtimer, raptorsi, robertino, vlad the impaler, Vlad000, VP6919, yufighter, zzapNDjuric99