[ Brkic @ 30.10.2005. 03:25 ] @
Moze li omoc kako da napravim da odgovorom na pitanje 'Resetovati windows' se windows resetuje ??
[ Passwd @ 30.10.2005. 08:05 ] @
Ne razumijem te bas sa ovim, da se na odgovor restarta windows...
Napravi edit u kojem ces pisat odgovor 'Resetovati windows' i onda pritisunt neki button, i onda if edit1.text='Resetovati windows' then...
Code:

ExitWindowsEx(EWX_REBOOT,0);
[ Miloš Baić @ 30.10.2005. 10:34 ] @
Ne znam gde hoces da smestis opciju za restart windows-a?!

Ponudicu nesto ovako:

1) napravis formu recimo 5x3 cm, otprilike (mozes proizvoljno )

2) stavis 1 label i u svojstvu "Caption" na kartici "Properties" napises recimo
'Resetovanje Kompjutera'

3) na kartici "events" (forme) odes na metod "OnCreate" i uneses sledeci kod:

procedure TResetovanje.FormCreate(Sender: TObject);
begin

ShellExecute(Handle, 'Open', PChar('shutdown'), PChar('-r -t 00'), nil, SW_HIDE);
close;

end;

4) obavezno moras dodati ovu liniju koda posle odeljka "implementation"

uses ShellApi;

Posle ovoga kompajliraj i to bi trebalo da radi.

*Napomena : ovo vazi za windows Xp

Nije tesko zar ne? Uzivaj... ;-)
[ anon68680 @ 30.10.2005. 15:21 ] @
probaj ovako..
dupli click na button neki i ubaci ovo
Code:

  if  MessageDlg('Restartovati windows?',mtConfirmation,[mbyes, mbno],0)=mryes then
ExitWindowsEx(EWX_REBOOT,0);

ili umesto ExitWindowsEx koristi winexec('shutdown -s',0); cime dobijas 30sec pre nego sto se komp restartuje, pa ako jednostavno otjesh da prekines restart uradis winexec('shutdown -a',0);

[Ovu poruku je menjao krza dana 30.10.2005. u 16:22 GMT+1]
[ Miloš Baić @ 30.10.2005. 23:45 ] @
Ili probaj nesto ovako...

code

begin
If Application.Messagebox('This will Restart Windows. Do you want to continue?','Restart Windows', MB_OK + MB_OKCANCEl) = 1 then
ExitWindowsEx(EWX_Reboot, 0);
end;
[ reiser @ 31.10.2005. 12:08 ] @
Probaj ovako, probaj onako, na kraju se sve svodi na isto :)
I ono sa koriscenjem ExitWindowsEx(EWX_REBOOT, 0) nece da ti radi ako prethodno ne setujes DEBUG privilegije za tvoj proces :

Code:

// Setuje odredjene privilegije za zadati proces
function SetProcPrivileges(const PID : Cardinal; const priv : String) : Boolean;
var
  hToken  : THandle;
  tkp     : TTokenPrivileges;
  retval  : DWORD;
  ProcHnd : THandle;
begin
  result := FALSE;
  ProcHnd := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
  If (ProcHnd <> 0) and
     (OpenProcessToken(ProcHnd, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)) Then
  Begin
    LookupPrivilegeValue(nil, PAnsiChar(priv), tkp.Privileges[0].Luid);
    tkp.PrivilegeCount := 1;
    tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, retval);
    result := GetLastError = ERROR_SUCCESS;
  End;
  CloseHandle(ProcHnd);
end;


I u FormCreate ili gde vec hoces stavi SetProcPrivileges(GetCurrentProcessID, 'SeDebugPrivilege');. Dovoljno je samo jednom da pozoves ovu fju i proces ce ti imati SeDebugPrivilege flag. Posle toga pozivaj ExitWindowsEx(EWX_REBOOT, 0);.

poz
[ Brkic @ 01.11.2005. 17:31 ] @
Hvala vam na pomoci , evo i ja sam nasao jedno resenje

var
hToken : THandle;
tkp, ptkp : TTokenPrivileges;
i : dword;

begin
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
hToken);
LookupPrivilegeValue(NiL, 'SE_SHUTDOWN_NAME', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,tkp,0,ptkp,i);
GetLastError;
ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0); //gasenje
end;

ExitWindowsEx(EWX_REBOOT or EWX_FORCE, 0); //resetovanje

[Ovu poruku je menjao Brkic dana 01.11.2005. u 18:34 GMT+1]
[ Brkic @ 01.11.2005. 17:33 ] @
Imam jos jedno pitanje....

Kako da napravim da se sistem ugasi u 'Hibernation' koa sto je 'Stand By' sa drzanjem 'sifta' ,moze li ??
[ Srki_82 @ 01.11.2005. 18:04 ] @
Pogledaj ove dve funkcije:

http://msdn.microsoft.com/libr...power/base/setsuspendstate.asp

http://msdn.microsoft.com/libr...r/base/setsystempowerstate.asp

Koristi onu koja ti je laksa za upotrebu... ako koristis Delphi 7 po default-u imas na raspolaganju samo SetSystemPowerState funkciju.
[ Brkic @ 04.11.2005. 22:37 ] @
Hvala na pomoci...

Srki ovo sto si mi predlozio trazi SDK Platformu ali nisam uspeo da je skinem tj. skinuo sam nesto od 1.3mb ali ne radi.

Moze li neko objasnjenje oko SDK Platforme ??

SetSystemPowerState gledao sam po helpu o tome ali nisam nasao nista, koritim Delphi7.
[ Srki_82 @ 04.11.2005. 23:01 ] @
Evo... ja koristim Delphi 7 i nemam Platform SDK i ovaj kod savrseno radi
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetSystemPowerState(True, False);
end;

end.
[ Brkic @ 05.11.2005. 14:35 ] @
To je to hvala Srki.

Moze Log OFF i Hibernacija.

[Ovu poruku je menjao Brkic dana 05.11.2005. u 15:36 GMT+1]
[ Brkic @ 20.02.2007. 17:31 ] @
Pojavio mi se nelogican problem pa ako moze pomoc.

Program sto sam pravio, koji je mogao da resetuje Windows, radio je normalno i sada vise nece da radi na drugoj verciji Windows-a XP. Probao sam na par drugih racunara i ni na jednom nece.
Napisao sam ponovo jednostavniju varijantu programa sa svim vasim savetima i mogucnostima i nista,jednostavno nece ni reset ni gasenje. Probao sam i reiser-ov savet da setujem DEBUG privilegije ali nista.
Jedino sto je na svim racunarima na kojima sam probao bio AVG antivirus a ranije dok je radilo nije bio,pokusao sam ga izbrisati ali svejedno ne radi.

ima li neko resenje ??
[ Brkic @ 20.02.2007. 19:35 ] @
Evo probao sam na 2 kompa gde nema AVG-a i radi sve OK.

Sta moze biti,tj kako napraviti da radi sa AVG-om ???
[ savkic @ 20.02.2007. 23:13 ] @
> Evo probao sam na 2 kompa gde nema AVG-a i radi sve OK.
> Sta moze biti,tj kako napraviti da radi sa AVG-om ???

Za početak proveri da li neka funkcija vraća grešku, OpenProcessToken, LookupPrivilegeValue, AdjustTokenPrivileges i ExitWindowsEx. Ako ne koristiš EWX_FORCE flag možda neki program (antivirus) vraća negativan odgovor na WM_QUERYENDSESSION. Probaj svakako gašenje i sa InitiateSystemShutdown funkcijom.
[ Brkic @ 21.02.2007. 00:06 ] @
koristio sam ovaj kod...

var
hToken : THandle;
tkp, ptkp : TTokenPrivileges;
i : dword;

begin
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
hToken);
LookupPrivilegeValue(NiL, 'SE_SHUTDOWN_NAME', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,tkp,0,ptkp,i);
GetLastError;
ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0); //gasenje
end;

nisam nasao kako da koristim InitiateSystemShutdown , moze li neki primer kako radi ??

Vidim da je InitiateSystemShutdown windows.pas funkcija ali nikako nisam nasao tu funkciju u helpu.
Kako doci do windows.pas tj.do helpa svih njegovih funkcija ??

[Ovu poruku je menjao Brkic dana 21.02.2007. u 08:47 GMT+1]
[ savkic @ 21.02.2007. 08:02 ] @
> isam nasao kako da koristim InitiateSystemShutdown , moze li neki primer kako radi ??

> Vidim da je InitiateSystemShutdown windows.pas funkcija ali nikako nisam nasao tu funkciju u helpu.
> Kako doci do windows.pas tj.do helpa svih njegovih funkcija ??

To su WinAPI funkcije ne Delphi, stoga help kao i primere možeš naći u MSDNu. MSDN je dostupan i online na www.msdn.com