[ Boki DX-11 @ 28.11.2005. 23:00 ] @
Ima li neki kod u Pascal-u za restartovanje racunara???!
[ Srki_82 @ 02.12.2005. 09:04 ] @
Za operativne sisteme zasnovane na DOS operativnom sistemuv(DOS, Win 3.x, Win95...Me) za resetovanje racunara je dovoljno da dodas ovo u kodu
Code:
asm
  jmp ffff:0
end;

Nisam siguran da li je sintaxa Pascalovog ASM ovakva, ali shvatas poentu. Cilj je skociti na adresu FFFF:0 gde se nalazi instrukcija za startovanje programa u BIOS-u i time pocinje reset.

Za sisteme zasnovane na WinNT (WinNt, Win2000, WinXP) ovakav nacin ne uspeva, ali mozes da pozoves program SHUTDOWN koji ce zapoceti gasenje ili resetovanje racunara.
Citat:
Shutdown help:
Usage: shutdown [ -i | -l | -s | -r | -a ] [ -f ] [ -m \\computername ] [ -t xx ] [ -c "comment" ] [ -d up:xx:yy ]

No args Display this message (same as -?)
-i Display GUI interface, must be the first option
-l Log off (cannot be used with -m option)
-s Shutdown the computer
-r Shutdown and restart the computer
-a Abort a system shutdown
-m \\computername Remote computer to shutdown/restart/abort
-t xx Set timeout for shutdown to xx seconds
-c "comment" Shutdown comment (maximum of 127 characters)
-f Forces running applications to close without war
ning
-d [ u ][ p ]:xx:yy The reason code for the shutdown
u is the user code
p is a planned shutdown code
xx is the major reason code (positive integer less than 256)
yy is the minor reason code (positive integer less than 65536)


[Ovu poruku je menjao Srki_82 dana 02.12.2005. u 10:06 GMT+1]
[ Boki DX-11 @ 02.12.2005. 11:27 ] @
Nisam najbolje razumeo, sta tacno treba da unesem izmedju Begin i End...Ovaj prvi red??? Sta da prepravim?!
[ Srki_82 @ 02.12.2005. 11:33 ] @
Ovako
Code:
procedure ResetDOS;
begin
  asm
    jmp ffff:0
  end;
end;

Jos jednom napominjem, ne znam sintax-u pascal asm pa mozda se mozda asm kod pise drugacije (recimo jmp $FFFF ili tkao nesto).
Code:
procedure ResetNT;
begin
  Exec('shutdown', '-r');
end;

Nemam instaliran pascal na poslu pa pisem napamet, ali to je u sustini to.
[ Boki DX-11 @ 02.12.2005. 16:23 ] @
Ne vredi, ovaj kod ne radi...ne znam zasto!
[ Srki_82 @ 03.12.2005. 10:29 ] @
Upsss... pardon
Zaboravih da NT ne dozvoljava obicnim DOS programima da pokrecu taj fajl. Evo... ovog puta sam napisao i napravio exe koji 100% radi. Samo prikazuje prozor za gasenje racunara. Ti posle postavi parametar za shutdown koji zelis.
[ Boki DX-11 @ 03.12.2005. 12:05 ] @
OK, exe radi, ali ovaj drugi fajl nece da kompajlije jer prijavljuje gresku "File not found (WINPROCS.TPU)"... zasto to?
Moze li taj program da pokrece, na primer, restart racunara ali bez onog prozora za dijalog?!
[ Srki_82 @ 03.12.2005. 12:10 ] @
Moze... samo promenis parametar -i u -r. Ne postoji WinProcs.TPU nego WinProcs.TPW. Da bi mogao da pozoves WinNT programcice i tvoj program mora da se bilduje za Win platformu. Pre kompajliranja postavi Target platform na Windows Application i lepo ce raditi. Ako zelis da ti isti program radi i za DOS i za Win onda napravis prvo exe za DOS i postavis ga kao STUB za svoj Win program pa ce OS automatski da pokrene progrgarm koji ume (DOS ce pokrenuti DOS verziju (STUB), a Win ce pokrenuti WIN verziju).
[ Nemanja Avramović @ 03.12.2005. 13:08 ] @
Srki, pojasni to za STUB, uvek sam se pitao kako neki program radi i u DOSu i u Windozi? :)
[ Srki_82 @ 03.12.2005. 14:08 ] @
Potreban ti je kompajler koji moze da menja STUB. Borlandov Pascal to ne podrzava pa jednostavno WinStub.exe fajl iz Bin foldera zamenis fajlom koji zelis da ti bude STUB i to je to. Imas DOS i Win verziju u jednom fajlu :)
Za kompajlere koji podrzavaju STUB dovoljno je samo da dodas nov fajl sa extenzijom DEF i da upises koji stub zelis... npr:
Code:
NAME        Reset

DESCRIPTION    'Reset WinNT'

EXETYPE     WINDOWS

STUB        'MOJSTUB.EXE'

CODE        PRELOAD MOVEABLE DISCARDABLE
DATA        PRELOAD MOVEABLE MULTIPLE

HEAPSIZE    1024
STACKSIZE    8196


To je ovde offtopic pa ako zelis, otvori novu temu :)
[ Boki DX-11 @ 03.12.2005. 19:56 ] @
Ne znam, ali kad kompajlujem ovaj kod on mi izbaci gresku takvog tipa:

Code:

uses
WinProcs, WinTypes;
Begin
WinExec('shutdown -i',sw_show);
End.


Imam Turbo Pascal, i ovaj kod ne radi...

Sta sad da radim?!

[Ovu poruku je menjao Boki DX-11 dana 03.12.2005. u 20:57 GMT+1]
[ Srki_82 @ 05.12.2005. 07:58 ] @
Mislim da Turbo Pascal ne moze da kompajlira za Win platformu. Uzmi Free Pascal... totalno besplatan i moze da kompajlira za oko 8 platformi i skoro 100% je kompatibilan sa Turbo Pascalom.
[ Boki DX-11 @ 05.12.2005. 19:33 ] @
TP moze da kompajlira za Windows, ali ovaj u ovom kodu stalno pokazuje gresku...

Skinuo sam Free Pascal i opet isto...
[ Srki_82 @ 05.12.2005. 21:21 ] @
Kao sto vidis ja mogu da kompajliram to. Ne znam kakvu verziju Pascala imas, ali ja bez problema kompaliram to sa Borland Pascalom.
[ Boki DX-11 @ 05.12.2005. 22:32 ] @
Imas li link sa kojeg si preuzeo taj Pascal...

Ili mi sastavi exe fajl koji odma pokrece restart kompa, bez onog prozora za dijalog!

...tnx...
[ Srki_82 @ 06.12.2005. 07:30 ] @
Nisam ga preuzeo :)
Kupio sam ga kad je izasao.

Stavicu ti exe koji to radi kad stignem kuci.
[ Boki DX-11 @ 07.12.2005. 20:31 ] @
Uspeo sam da napravim exe koji radi uz pomoc Dev-Pascala...samo sam kod malo izmenio:
Code:

uses
      Windows;
begin
      WinWxec('shutdown -r',SH_SHOW);
end.


To je to...hvala Srki, nista bez tebe...

...thanks jos jednom!!!