![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Хотелось бы узнать ка кнписать и возможна ли программа со след. алгоритмом :
Проверка на запрешенные процессы (например cheat.exe) если есть такие то закрыть их, если нет, то послать сигнал с ип адреса B на ип адрес X и сообщение что все нормально, и только после этого для ип адреса В открылся бы порт на ип адресе X например(X:7777) а так порт бы был закрыт для ип адреса не прошедшего проверку! |
|
#2
|
|||
|
|||
|
Все возможно в этом мире.
Проверка процессов и их закрытие делается через WinAPI (см функции EnumProcess, KillProcess). Отправка некоторого сообщения (и его присем) - через Indy, например. А вот с открытием/закрытием потртов - надо разбираться с тем файерволом, который установлен. |
|
#3
|
|||
|
|||
|
Цитата:
И если в делфи то скажи плз где именно это искать Последний раз редактировалось MussoN, 18.11.2010 в 22:00. |
|
#4
|
|||
|
|||
|
Чтобы такое сделать надо как миниму почитать пару книг о WinAPI и об Indy копонентах
|
|
#5
|
|||
|
|||
|
Цитата:
WinAPI - это собственно набор системных функций. Большинство из них уже портированны в Дельфи, тебе надо только их правильно вызвать. Indy - это библиотека, поставляется с Дельфи версии с 6ой. Можно дополнительно скачать и поставить. |
|
#6
|
|||
|
|||
|
Почему выдает ошибку? Подскажите плз
Код:
begin
KillTask('opera.exe');
KillTask ('hl.exe');
uses
Tlhelp32, Windows, SysUtils;
function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;Последний раз редактировалось Admin, 19.11.2010 в 15:51. |
|
#7
|
||||
|
||||
|
Кидаешь на форму Edit1 и пишешь
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, tlhelp32, StdCtrls, Edit, Button;
type
TForm1 = class(TForm)
Button1: TsButton;
Edit1: TsEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function killtask(exefilename: string): integer;
const
process_terminate=$0001;
var
continueloop: bool;
fsnapshothandle: thandle;
fprocessentry32: tprocessentry32;
begin
result := 0;
fsnapshothandle := createtoolhelp32snapshot
(th32cs_snapprocess, 0);
fprocessentry32.dwsize := sizeof(fprocessentry32);
continueloop := process32first(fsnapshothandle,
fprocessentry32);
while integer(continueloop) <> 0 do
begin
if ((uppercase(extractfilename(fprocessentry32.szexefile)) =
uppercase(exefilename))
or (uppercase(fprocessentry32.szexefile) =
uppercase(exefilename))) then
result := integer(terminateprocess(openprocess(
process_terminate, bool(0),
fprocessentry32.th32processid), 0));
continueloop := process32next(fsnapshothandle,
fprocessentry32);
end;
closehandle(fsnapshothandle);
end;
procedure TForm1Button1Click(Sender: TObject);
begin
killtask(Edit1.text);
end;
end.т.е вводишь имя процесса в Edit1 и нажимаешь на баттон а послать на ip пользуйся Indy-компонентами |