uruchamiam z kodu jakic plik *.bat w niewidzialnym oknie. chce sie dowiedziec jak sprawdzic czy zadanie juz sie wykonalo i zakończyl sie ten proces. Pozdrawiam
procedure procesy;
var
_HWND : THandle;
Proc : TProcessEntry32;
begin
_HWND := CreateToolHelp32SnapShot(TH32CS_SNAPALL,0);
Proc.dwSize:=SizeOf(Proc); // okresl rozmiar struktory
if Integer(Process32First(_HWND, Proc)) <> 0 then
repeat
ListBox1.Items.Add(Proc.szExeFile); // dodaje sciezkie pliku do ListBox'a
until Integer(Process32Next(_HWND, Proc)) = 0; // dopoki wartosc nie osiagnie 0
CloseHandle(_HWND);
end;
end;
procedura wyswietlajaca procesy - mozna to przerobic na sprawdzenie czy proces dany istnieje :) Czyli:
if proc.szexefile='proces.exe' then begin
instrukcja wykonania
end;
- pisane na szybko
function ExistsProcess(nazwa : string) : boolean;
var
i, Found : Integer;
begin
for i := 0 to FormForce.Procesy.Items.Count -1 do // analizuj wszystkie pozycje
begin
Found := Pos(nazwa, FormForce.Procesy.Items[i]); // szukaj ciagu znakow
if (Found > 0) and (FormForce.Procesy.Items[i][1] = nazwa[1]) then
begin
FormForce.RichEdit.SelAttributes.Color := clRed;
FormForce.RichEdit.SelText := ' STOP -> Proces nadal istnieje !'+ #13#10;
Result := True;
Break; // i przerwij dzialanie petli
end
else
Result := False;
end;
Result := False;
end;
opi: po pierwsze ta funkcja zawsze zwróci false, po drugie - co to jest formforce.procesy? zdaje się zapomniałeś wkleić kod wypełniający tą tablicę.
a co to jest : TProcessEntry32; ???
zapomnialem napisac ze w uses trzeba dodac TlHelp32
Witam
Tu masz przykład, co prawda w C++ ale bez problemu można przetlumaczyć na Delphi.
http://www.programuj.com/pytanie.php?p=ps4
Nie sprawdzilem też, czy działa z plikami .bat
Pozdrawiam</url>
Opi napisał(a)
<delphi> do uses należy dodać: TlHelp32;FormForce - nazwa formy
Procesy - ListBox
FormForce.RichEdit - Tutaj wypisanywany jest raport (można usunąć)
U mnie działa, chociaż kompilator zwraca uwagę na każde miejsce w funkcji gdzie jest Result := True/False;
// to spoko, ale - gdzie masz wypełnianie listboksa danymi? - Ł
lofix napisał(a)
// to spoko, ale - gdzie masz wypełnianie listboksa danymi? - Ł
FormForce to nie tablica lecz nazwa formy. A wpisy w TRichEdit spełniają rolę raportu.