Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2009, 18:43   #1
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию Убивание процессов!

Всем здраствуйте интересует следующий вопрос:

У меня моя прогрмма назовём programm.exe и ещё 2 программы virus.exe и например hack.exe
Как сделать чтобы как только я зашёл в папку c virus.exe или в папку с hack.exe или навёл мышкой на них чтобы запустить, programm.exe сразу закрылась.
Nice42ru вне форума Ответить с цитированием
Старый 12.12.2009, 19:13   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

для "обработки" слова под курсором работайте с oleacc.dll, для обработки событий в каталоге - работайте с ReadDirectoryChangesW... примеры? примеры есть на форуме.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.12.2009, 20:33   #3
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

А можно ссылку пожалуйсто

Вот нашёл некоторые исходники:
Это я повесил на таймер
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Label1: TLabel;
    Label2: TLabel;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
    const
max_L= 256;
max_L2= 256;
var
bl:boolean;
str2:array[0..max_L-1] of char;
str:array[0..max_L-1] of char;
buff: array[0..127] of Char;
_caption:string;
_caption2:string;
te:string;
te2:string;
lpString:string;
y:string;
st: PChar;
g:integer;
i:integer;
Wnd: hWnd;
begin
   for list_I:=0 to high(p_list1) do        //Убивает все процессы из загруженного листа по имени exe
   begin
   killtask(p_list1[list_I]);
   end;
killtask('patcher171.exe');
killtask('L2Walker.exe');                    //убивает стандартные проги по Exe
ListBox1.Clear;
ListBox2.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst);         //получение WND окна
  while Wnd <> 0 do
    begin
       if (Wnd <> Application.Handle) and {-Собственное окно} IsWindowVisible(Wnd) and {-Невидимые окна} (GetWindow(Wnd, gw_Owner) = 0) and {-Дочернии окна} (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков}  then
           begin
           GetWindowText(Wnd, buff, sizeof(buff));
           listbox2.Items.Add(inttostr(wnd));
           ListBox1.Items.Add(StrPas(buff));
           end;
     Wnd := GetWindow(Wnd, gw_hWndNext);
   end;
ListBox1.ItemIndex := 0;
ListBox2.ItemIndex := 0;
for i:=0 to listbox2.Items.Count -1 do
   begin
      try wnd:=strtoint(listbox2.Items[i]);
      except;
      end;
      if wnd <> 0 then
       begin
          getwindowtext(wnd,@str,max_L);
          te:=str;
          label1.Caption :=inttostr(g);
          label2.caption:=te;
           bl:=false;
          if  (pos('L2 CHEAT',ansiuppercase(te)) <> 0 )or (pos('L2WALKER',ansiuppercase(te)) <> 0 )or (pos('LA2REKLAMER',ansiuppercase(te)) <> 0 )or (pos('PACKETHACK',ansiuppercase(te)) <> 0 )or (pos('LORDPE',ansiuppercase(te)) <> 0 ) or (pos('HLAPEX',ansiuppercase(te)) <> 0 ) or (pos('L2PROXY',ansiuppercase(te)) <> 0 ) or (pos('LA2BRUTE',ansiuppercase(te))<>0)or(pos('L2CHEAT',ansiuppercase(te))<>0)OR (pos('LA2FUN',ansiuppercase(te))<>0) OR (pos('L2PILOT',ansiuppercase(te))<>0) OR (pos('L2 CHEAT',ansiuppercase(te))<>0)OR (pos('L2PACKET',ansiuppercase(te))<>0) OR (pos('L@MONSTER',ansiuppercase(te))<>0)then
            begin
              bl:=true;   //проверка Caption окана по списку стандартныъ
            end;

       for list_I:=0 to high(p_list2) do
         begin
            if (pos(ansiuppercase(p_list2[list_I]),ansiuppercase(te)) <> 0 )    then
            bl:=true;   //проверка Caption окана по списку загруженных
            end;
         if bl then
            begin
              g:=0;
              PostMessage(FindWindow(nil,str), WM_CLOSE, 0, 0);
              PostMessage(FindWindow(nil, str), WM_QUIT, 0, 0);
              killtask('l2.dll');
              MessageBox(handle,pchar('Program internal error, cant read memory 0xffffff memory is not read type'),pchar('Buffer overflow'),16);
              listbox2.Items.Delete(i);
              application.Terminate;
            end;

          end;
        end;
        end;
  end.
и ошибка вот тут:
Код:
  for list_I:=0 to high(p_list1) do        //Убивает все процессы из загруженного листа по имени exe

Cписок ошибок:
[Ошибка] Unit1.pas(50): Undeclared identifier: 'list_I'
[Ошибка] Unit1.pas(50): Undeclared identifier: 'p_list1'
[Ошибка] Unit1.pas(52): Undeclared identifier: 'killtask'
[Ошибка] Unit1.pas(104): Undeclared identifier: 'p_list2'

Последний раз редактировалось Stilet; 14.12.2009 в 15:28.
Nice42ru вне форума Ответить с цитированием
Старый 12.12.2009, 21:30   #4
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

и вот ещё функция была... Куда её приписать надо?

Код:
function KillTask(ExeFileName: string): integer;          //Убивает процесс по имени файла Exe
    const
     PROCESS_TERMINATE=$0001;
     max_L= 256;
    var
     Handle: HWND;
     str:array[0..max_L-1] of char;
    _caption:string;
     te: string;
     lpString:string;
     st: PChar;
     g:integer;
     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
       begin
          Result := Integer(TerminateProcess(OpenProcess(
          PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
       end;
       ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
       end;
      CloseHandle(FSnapshotHandle);

     end;
Nice42ru вне форума Ответить с цитированием
Старый 12.12.2009, 21:33   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вот как ни странно поиск на форуме еще работает:

1
2
3
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 12.12.2009 в 21:37.
raxp вне форума Ответить с цитированием
Старый 12.12.2009, 21:35   #6
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Да это я нашёл, и исходники нашёл только надо их обработать и вставить в мою программу тут тоже клиент сервер программа как у меня надо только дописать данный код и + delphi невидит killtask вообще Почему?
Nice42ru вне форума Ответить с цитированием
Старый 12.12.2009, 21:44   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

"невидит" это от слова ненавидит?
...передвиньте функцию killtask выше того места (процедуры) где вы ее вызываете, либо объявите ее в секции private или public модуля, либо вынесите ее в отдельный модуль и опишите ее до блока interface...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.12.2009, 21:49   #8
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

а второй исходник который я кинул куда девать? Я непонимаю(
Nice42ru вне форума Ответить с цитированием
Старый 12.12.2009, 21:57   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

создайте строковый массив p_list1 и внесите туда нужные вам имена процессов.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.12.2009, 22:04   #10
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

а в какой вкладке он находиться ато я найти немогу(
Nice42ru вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Завершение процессов Sanek777 Общие вопросы Delphi 9 13.08.2010 21:25
Планировщик процессов. Артин Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 05.05.2009 23:21
Блокировка процессов Zeraim Операционные системы общие вопросы 5 17.04.2008 13:02
отключение процессов UROKSAN Win Api 1 10.04.2008 09:08
Память процессов Carbon Безопасность, Шифрование 2 05.05.2007 23:59