Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Pascal] перезагрузка и вызов 22.07.01 21:44
Автор: GlAsS Статус: Незарегистрированный пользователь
|
Как из BorlandPascal вызвать внешнюю программу. Я пробовал exec но не получается.
И как можно перезапустить комп. Как можно при помощи exec вызвать
rundll.exe user.exe,exitwindows. Заранее благодарен.
|
 |
[Pascal] перезагрузка и вызов 23.07.01 10:18
Автор: FFF Статус: Незарегистрированный пользователь
|
> Как из BorlandPascal вызвать внешнюю программу. Я пробовал > exec но не получается. > И как можно перезапустить комп. Как можно при помощи exec > вызвать > rundll.exe user.exe,exitwindows. Заранее благодарен.
1) для запуска .exe или .bat из программы можно использовать такую последовательность вызовов (см. TApplication.DosShell в исходниках RTL TV)
DoneSysError;
DoneEvents;
DoneVideo;
DoneDosMem;
WriteShellMsg;
SwapVectors;
Exec(GetEnv('COMSPEC'),' /c user.exe');
SwapVectors;
InitDosMem;
InitVideo;
InitEvents;
InitSysError;
2) перезагрузить комп можно с помощью такой проги:
Program Reboot;
Var
bWarm: Boolean;
Begin
bWarm := False;
{ Warm = True triggers warm boot with no memory test: }
IF bWarm THEN MEMW[$0040:$0072] := $1234
{ Warm = False triggers cold boot with full memory test: }
ELSE MEMW[$0040:$0072] := 0;
INLINE($EA/$00/$00/$FF/$FF); { JMP FFFF:0 }
End.
|
 |  |
[Pascal] перезагрузка и вызов 23.07.01 11:21
Автор: Xoro Статус: Незарегистрированный пользователь
|
> > Как из BorlandPascal вызвать внешнюю программу. Я > пробовал > > exec но не получается. > > И как можно перезапустить комп. Как можно при помощи > exec > > вызвать > > rundll.exe user.exe,exitwindows. Заранее благодарен. > > 1) для запуска .exe или .bat из программы можно > использовать такую последовательность вызовов (см. > TApplication.DosShell в исходниках RTL TV) > DoneSysError; > DoneEvents; > DoneVideo; > DoneDosMem; > WriteShellMsg; > SwapVectors; > Exec(GetEnv('COMSPEC'),' /c user.exe'); > SwapVectors; > InitDosMem; > InitVideo; > InitEvents; > InitSysError; > > 2) перезагрузить комп можно с помощью такой проги: > Program Reboot; > Var > bWarm: Boolean; > > Begin > > bWarm := False; > > { Warm = True triggers warm boot with no memory test: } > IF bWarm THEN MEMW[$0040:$0072] := $1234 > { Warm = False triggers cold boot with full memory test: } > ELSE MEMW[$0040:$0072] := 0; > INLINE($EA/$00/$00/$FF/$FF); { JMP FFFF:0 } > End.
Для запуска достаточно:
uses memory;
begin
DoneMemory;
Exec(GetEnv('COMSPEC'),' /c user.exe');
InitMemory;
end.
|
|
|