![]() |
|
|
Регистрация | << Правила форума >> | 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-компонентами Начинающий Delphi Помогаю за Спасибо! ![]() |