Ładny brzuch

Witam.
Potrzebuje programik ktory bedzie wlaczal wskazany program i po jakims czasie (wskazanym z gory) wylaczal go i wlaczal ponowie.
program Restarter; uses shellapi; begin shellexecute(666, 'open', 'prog2.exe', nil, nil, 1); readln; end.
jak widac narazie idzie mi swietnie :]
to co jest teraz zrobione to tylko otwiera ten program .. a teraz pytanie jak zrobic zeby zamykalo ten program ktory jest otwierany za pomoca shellexecute.



Utworzenie procesu:var  Form1: TForm1;  proc:integer=0; ... procedure TForm1.Button1Click(Sender: TObject); var pi:process_information; si:startupinfo; begin GetStartupInfo(si); if CreateProcess('c:\windows\notepad.exe','',nil,nil,false,PROCESS_CREATE_PROCESS, nil,nil,si,pi) then proc:=pi.hProcess; end;i zamknicie go:if proc<>0 then TerminateProcess(proc,0);reszt sam musisz zrobi :rolleyes:
Uytkownik Cyrkiel edytowa ten post 27 grudzie 2005, 22:45
hmm zapomnialem napisac w pierwszym poscie o dwoch rzeczach ... :P
1. Aplikacja konsolowa (czyli dosowe okienko)
2. Perpetum mobile - raz wlacze i zostawiam a ona sobei dziala i dziala i nic nie trzeba w niej klikac ruszac ani tym podobne

Zamie buttonclicka na jak proc, ptla i jedziesz ;)



jak dodaje TerminateProcess to dostaje error od delphi
[Error] Restarter.dpr(10): Undeclared identifier: 'TerminateProcess'

A przy CreateProcess tez si to pokazuje? Dodae "windows" do "uses"?

program Restarter; uses shellapi,windows; var pi:process_information; si:startupinfo; proc:integer=666; begin GetStartupInfo(si); CreateProcess('prog2.exe','',nil,nil,false,PROCESS_CREATE_PROCESS,nil,nil,si,pi) ; proc:=pi.hProcess; if proc<>0 then TerminateProcess(proc,0); readln; end.
mam cos takie ale to dalej nie dziala tak jak powinno...
1. proces ktory otwiera mial byc w nowym oknie a nie w tym z programem (tak jak przy shellexecute)
2. terminate nie dziala (pewnie cos zle wpisalem ...)


(...) mam cos takie ale to dalej nie dziala tak jak powinno...
1. proces ktory otwiera mial byc w nowym oknie a nie w tym z programem (tak jak przy shellexecute)
2. terminate nie dziala (pewnie cos zle wpisalem ...)
1. U mnie wszystko dobrze... Jeli s to dwa programy konsolowe otworzy si w jednym oknie -> program gwny napisz jako normalny (gui) :)
2. Po grzyba napisae =666 zamiast =0 :>
Uytkownik Cyrkiel edytowa ten post 28 grudzie 2005, 13:12

1. U mnie wszystko dobrze... Jeli s to dwa programy konsolowe otworzy si w jednym oknie -> program gwny napisz jako normalny (gui) :)
2. Po grzyba napisae =666 zamiast =0 :>

a jak zrobic zeby program sie powtarzal co okreslana liczbe minut ?


a jak zrobic zeby program sie powtarzal co okreslana liczbe minut ? Tworzysz niewidoczne okno, a w nim timer lub sleep(1000*iletamsekund) w ptli :)


Tworzysz niewidoczne okno, a w nim timer lub sleep(1000*iletamsekund) w ptli :)

Cay program:uses Windows, Messages; var wnd:integer; wc:wndclass; msg:tmsg; b:boolean=true; pi:process_information; si:startupinfo; proc:integer=0; function wproc(w, msg:integer; lparam:lparam; wparam:wparam):hresult; stdcall; begin case msg of WM_CLOSE:PostQuitMessage(0); WM_TIMER:begin if b then begin CreateProcess('prog2.exe','',nil,nil,false,PROCESS_CREATE_PROCESS,nil,nil,si,pi); proc:=pi.hProcess; end else TerminateProcess(proc,0); b:=not b; end; else result:=DefWindowProc(w,msg,lparam,wparam); end; end; begin with wc do begin style:=CS_GLOBALCLASS; lpfnWndProc:=@wproc; cbClsExtra:=0; cbWndExtra:=0; hInstance:=hinstance; hIcon:=0; hCursor:=0; hbrBackground:=0; lpszMenuName:=nil; lpszClassName:='okienko'; end; if RegisterClass(wc)=0 then exit; wnd:=CreateWindow(wc.lpszClassName,'oknoooooo',0,-1,-1,-1,-1,0,0,hinstance,nil); SetTimer(wnd,1,2000,nil); GetStartupInfo(si); while GetMessage(msg,0,0,0) do begin TranslateMessage(msg); DispatchMessage(msg); end; end.

program jeszcze nie dziala tak jak bym chcial ale to juz sobie poprawie ...
chodzi mi o to ze ponowne uruchomienie aplikacji nastepuje po takim czasie jak byla wlaczona, a ma nastpowac odrazu lub gora z paru sekundowym opoznieniem ;d
ale dziekuje za pomoc

a jednak nie wiem jak to zrobic :(:(
mogl bys obiascnic dzialanie tego programu ...??
byl bym bardzo wdzieczny :)

sory ze nie edytuje tylko w osobnym ale tak by pewnie nikt tego nie zobaczyl...

Cay program:uses Windows, Messages; var wnd:integer; wc:wndclass; msg:tmsg; b:boolean=true; pi:process_information; si:startupinfo; proc:integer=0; function wproc(w, msg:integer; lparam:lparam; wparam:wparam):hresult; stdcall; begin case msg of WM_CLOSE:PostQuitMessage(0); WM_TIMER:begin if b then begin CreateProcess('prog2.exe','',nil,nil,false,PROCESS_CREATE_PROCESS,nil,nil,si,pi); proc:=pi.hProcess; end else TerminateProcess(proc,0); b:=not b; end; else result:=DefWindowProc(w,msg,lparam,wparam); end; end; begin with wc do begin style:=CS_GLOBALCLASS; lpfnWndProc:=@wproc; cbClsExtra:=0; cbWndExtra:=0; hInstance:=hinstance; hIcon:=0; hCursor:=0; hbrBackground:=0; lpszMenuName:=nil; lpszClassName:='okienko'; end; if RegisterClass(wc)=0 then exit; wnd:=CreateWindow(wc.lpszClassName,'oknoooooo',0,-1,-1,-1,-1,0,0,hinstance,nil); SetTimer(wnd,1,2000,nil); GetStartupInfo(si); while GetMessage(msg,0,0,0) do begin TranslateMessage(msg); DispatchMessage(msg); end; end.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •