Ĺadny brzuch
Co należy wpisać do funkcji w miejsce znaków zapytania? Znając tylko nazwe procesu, a cardinal to chyba zmienna liczbowa?
Windows.TerminateProcess(???{Cardinal},0);
Tam gdzie jest '0' też nie wiem. Podejżewam, że to będzie powód zamknięcia do logów.
Uchwyt jest chyba HWND, a nie Cardinal :)
//Znalazłem funkcje
GetProcessId
//Jedyny problem to to, iż program sie pluje, że nie zna fukcji. Jaki moduł za nią odpowiada?
Użytkownik mariuszlorenc edytował ten post 07 kwiecień 2005, 09:42
Niestety nie. Musi być "GetProcessId". Wiesz może jak wykonać Handle na procesie? To jest konsolówka, więc może da sie gdzieś zapisać ten ID do zmiennej?
Musi być "GetProcessId".
Dlaczego? Nie wiem nawet czy cos takiego istnieje...
jak wykonać Handle na procesie
:huh: moglbys powtorzyc?
To jest konsolówka, więc może da sie gdzieś zapisać ten ID do zmiennej?
Nie lapie...
program ProcessKiller; uses Windows, Messages, TLHelp32, Classes, SysUtils; {$R *.res} var AProcess : array [0..30] of String; procedure InitializeApp; var I : Integer; begin if ParamCount > 30 then MessageBox(0, 'Za dużo procesów w konsoli', 'Process Manager Error', MB_OK); for i:=0 to ParamCount do AProcess[i] := ParamStr(i+1); end; procedure KillOnListProcess; var Handle, proc : THandle; Process : TProcessEntry32; i : Integer; begin Handle:=CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0); Process.dwSize:=SizeOf(Process); if Integer(Process32First(Handle, Process))<>0 then repeat for i:=0 to ParamCount do if AProcess[i] = Process.szExeFile then begin proc := OpenProcess(PROCESS_TERMINATE, bool(0), Process.th32ProcessID); TerminateProcess(proc, 0); CloseHandle(proc); end; until Integer(Process32Next(Handle, Process))=0; CloseHandle(Handle); end; procedure Run; var Msg: TMsg; begin repeat KillOnListProcess; TranslateMessage(msg); DispatchMessage(msg); Sleep(5000); until Msg.message = WM_QUIT; Halt(0); end; begin InitializeApp; Run; end.
Ten program co 5 sekund sprawdza czy na liście procesów nie ma procesy którego nazwę podałeś jako parametr do aplikacji (np.: iexpore.exe) i jeśli ten proces istnieje jest natychmiast zamykany. Podejrzyj sobie o co chodzi, znajdź to czego potrzebujesz. Kodu nie jest dużo i działa.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Windows.TerminateProcess(???{Cardinal},0);
Tam gdzie jest '0' też nie wiem. Podejżewam, że to będzie powód zamknięcia do logów.

Uchwyt jest chyba HWND, a nie Cardinal :)
//Znalazłem funkcje
GetProcessId
//Jedyny problem to to, iż program sie pluje, że nie zna fukcji. Jaki moduł za nią odpowiada?
Użytkownik mariuszlorenc edytował ten post 07 kwiecień 2005, 09:42

Niestety nie. Musi być "GetProcessId". Wiesz może jak wykonać Handle na procesie? To jest konsolówka, więc może da sie gdzieś zapisać ten ID do zmiennej?
Musi być "GetProcessId".
Dlaczego? Nie wiem nawet czy cos takiego istnieje...
jak wykonać Handle na procesie
:huh: moglbys powtorzyc?
To jest konsolówka, więc może da sie gdzieś zapisać ten ID do zmiennej?
Nie lapie...
program ProcessKiller; uses Windows, Messages, TLHelp32, Classes, SysUtils; {$R *.res} var AProcess : array [0..30] of String; procedure InitializeApp; var I : Integer; begin if ParamCount > 30 then MessageBox(0, 'Za dużo procesów w konsoli', 'Process Manager Error', MB_OK); for i:=0 to ParamCount do AProcess[i] := ParamStr(i+1); end; procedure KillOnListProcess; var Handle, proc : THandle; Process : TProcessEntry32; i : Integer; begin Handle:=CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0); Process.dwSize:=SizeOf(Process); if Integer(Process32First(Handle, Process))<>0 then repeat for i:=0 to ParamCount do if AProcess[i] = Process.szExeFile then begin proc := OpenProcess(PROCESS_TERMINATE, bool(0), Process.th32ProcessID); TerminateProcess(proc, 0); CloseHandle(proc); end; until Integer(Process32Next(Handle, Process))=0; CloseHandle(Handle); end; procedure Run; var Msg: TMsg; begin repeat KillOnListProcess; TranslateMessage(msg); DispatchMessage(msg); Sleep(5000); until Msg.message = WM_QUIT; Halt(0); end; begin InitializeApp; Run; end.
Ten program co 5 sekund sprawdza czy na liście procesów nie ma procesy którego nazwę podałeś jako parametr do aplikacji (np.: iexpore.exe) i jeśli ten proces istnieje jest natychmiast zamykany. Podejrzyj sobie o co chodzi, znajdź to czego potrzebujesz. Kodu nie jest dużo i działa.