Ima li neki kod u Pascal-u za restartovanje racunara???!
Pascal - Restartovanje racunara?!
Zaključano
Zakačeno
izmenjeno 1 put, poslednji put Srki_82 02.12.2005. u 10:06
Izmene poruke
- Srki_8202.12.2005. u 10:06zapis iz teksta poruke
Za operativne sisteme zasnovane na DOS operativnom sistemuv(DOS, Win 3.x, Win95...Me) za resetovanje racunara je dovoljno da dodas ovo u kodu
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.
Code:
asm
jmp ffff:0
end;
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)
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)
Potpis
Nisam najbolje razumeo, sta tacno treba da unesem izmedju Begin i End...Ovaj prvi red??? Sta da prepravim?!
Ovako
Jos jednom napominjem, ne znam sintax-u pascal asm pa mozda se mozda asm kod pise drugacije (recimo jmp $FFFF ili tkao nesto).
Nemam instaliran pascal na poslu pa pisem napamet, ali to je u sustini to.
Code:
procedure ResetDOS;
begin
asm
jmp ffff:0
end;
end;
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;
procedure ResetNT;
begin
Exec('shutdown', '-r');
end;
Nemam instaliran pascal na poslu pa pisem napamet, ali to je u sustini to.
Potpis
Ne vredi, ovaj kod ne radi...ne znam zasto!
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.
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.
Potpis
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?!
Moze li taj program da pokrece, na primer, restart racunara ali bez onog prozora za dijalog?!
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).
Potpis
Srki, pojasni to za STUB, uvek sam se pitao kako neki program radi i u DOSu i u Windozi? :)
Potpis
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:
To je ovde offtopic pa ako zelis, otvori novu temu :)
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
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 :)
Potpis
izmenjeno 1 put, poslednji put Boki DX-11 03.12.2005. u 20:57
Izmene poruke
- Boki DX-1103.12.2005. u 20:57zapis iz teksta poruke
Ne znam, ali kad kompajlujem ovaj kod on mi izbaci gresku takvog tipa:
Imam Turbo Pascal, i ovaj kod ne radi...
Sta sad da radim?!
Code:
uses
WinProcs, WinTypes;
Begin
WinExec('shutdown -i',sw_show);
End.
uses
WinProcs, WinTypes;
Begin
WinExec('shutdown -i',sw_show);
End.
Imam Turbo Pascal, i ovaj kod ne radi...
Sta sad da radim?!
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.
Potpis
TP moze da kompajlira za Windows, ali ovaj u ovom kodu stalno pokazuje gresku...
Skinuo sam Free Pascal i opet isto...
Skinuo sam Free Pascal i opet isto...
Kao sto vidis ja mogu da kompajliram to. Ne znam kakvu verziju Pascala imas, ali ja bez problema kompaliram to sa Borland Pascalom.
Potpis
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...
Ili mi sastavi exe fajl koji odma pokrece restart kompa, bez onog prozora za dijalog!
...tnx...
Nisam ga preuzeo :)
Kupio sam ga kad je izasao.
Stavicu ti exe koji to radi kad stignem kuci.
Kupio sam ga kad je izasao.
Stavicu ti exe koji to radi kad stignem kuci.
Potpis
Uspeo sam da napravim exe koji radi uz pomoc Dev-Pascala...samo sam kod malo izmenio:
To je to...hvala Srki, nista bez tebe...
...thanks jos jednom!!!
Code:
uses
Windows;
begin
WinWxec('shutdown -r',SH_SHOW);
end.
uses
Windows;
begin
WinWxec('shutdown -r',SH_SHOW);
end.
To je to...hvala Srki, nista bez tebe...
...thanks jos jednom!!!