Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Tamposhka
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 32
#1

Таск киллер - C++

20.01.2012, 22:41. Просмотров 1522. Ответов 17
Метки нет (Все метки)

Всем привет.
Прошу Вашей помощи... Мне необходимо написать программу которая запускалась бы в фоне и проверяла запущен ли указанный процесс (по имени), например "qip.exe", и если находит его запущеным чтоб тихо его убивала. Гуглил очень долго эту тему, но ничего нормального найти не удалось( Кто может помогите, или мб у кого-то есть такая прога поделитесь плиз. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
21.01.2012, 00:59     Таск киллер #2
Не понял проблемы... Запускаешь системную команду поиска процесса - цепляешь из нее id процесса - киляешь процесс.
Tamposhka
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 32
21.01.2012, 02:18  [ТС]     Таск киллер #3
можешь примерно объяснить как это все должно выглядеть? какая команда поиска процесса?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
21.01.2012, 04:50     Таск киллер #4
Для затравки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h> 
#include <Windows.h> 
#include <Winnt.h> 
#include <tlhelp32.h>
FILE *f;
bool SpisokProcessov ()  {
 
 HANDLE hProcessSnap;
 PROCESSENTRY32 pe32;
 
 //Это мы находим дескриптор снимка процессов
 hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
 if (hProcessSnap == INVALID_HANDLE_VALUE)
 return false;
 pe32.dwSize = sizeof(PROCESSENTRY32);
 
 
 int i= 0;
 
 //
 
 Process32First(hProcessSnap, &pe32);
 printf ("%d  PID= %x  %s\n",++i, pe32.th32ProcessID, pe32.szExeFile);
 fprintf(f,"%d  PID= %x   %s \n",i, pe32.th32ProcessID, pe32.szExeFile);
 while (Process32Next(hProcessSnap, &pe32)) {
  printf ("%d  PID= %x  %s\n",++i, pe32.th32ProcessID, pe32.szExeFile);
  fprintf(f,"%d  PID= %x   %s \n",i, pe32.th32ProcessID, pe32.szExeFile);
 } 
 
 
 CloseHandle(hProcessSnap);
 return true;
}
 
 
 
 int main () {
 f = fopen("rezultat.txt","wb");
 
 //Если циклом не хочешь, надо закомментить эту херь
 //while (1) 
  SpisokProcessov ();
 fclose (f);
  getchar ();
  return 0;
 }
Tamposhka
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 32
21.01.2012, 16:40  [ТС]     Таск киллер #5
Получилось вот такое чудо, убивающее процесс, но теперь проблема.. не могу сделать чтоб не было видно окна консоли подскажите плиз как, и еще когда пытаюсь себя копировать выдает ошибку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "stdafx.h"
#include <windows.h>
#include <string.h>
#include <Tlhelp32.h>
#include <iostream>
#include <conio.h>
 
 
 
DWORD PIDByName(WCHAR * AProcessName)
{
  HANDLE pHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  PROCESSENTRY32 ProcessEntry;
  DWORD pid;
  ProcessEntry.dwSize = sizeof(ProcessEntry);
  bool Loop = Process32First(pHandle, &ProcessEntry);
 
  while (Loop)
    {
      if (wcsstr(ProcessEntry.szExeFile, AProcessName))
      {
                  pid = ProcessEntry.th32ProcessID;
                  CloseHandle(pHandle);
                  return pid;
      }
      Loop = Process32Next(pHandle, &ProcessEntry);
    }
    return 0;
}
 
bool KillProcByPid(DWORD pid)
{
DWORD ExitCode;
HANDLE hp;
bool ret = true;
 
if(pid)
        {
        hp = OpenProcess(PROCESS_ALL_ACCESS, true, pid);
        if (hp)
                {
                GetExitCodeProcess(hp, &ExitCode);
                ret = TerminateProcess(hp, ExitCode);
                }
        else
                {
                return false;
                }
        }
else
        {
        return false;
        }
 
CloseHandle(hp);
return ret;
}
 
int main(void)
{
         DWORD pid;
         while(1);
         pid = PIDByName(L"qip.exe");
         KillProcByPid(pid);
         CopyFile(__argv[0],"C:\\1.exe",FALSE);
         return 0;
}
CopyFile(__argv[0],'C:\\1.exe',FALSE); в ней ошибку выдает:
error C2664: CopyFileW: невозможно преобразовать параметр 1 из 'char *' в 'LPCWSTR'
Петррр
 Аватар для Петррр
5927 / 3364 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
21.01.2012, 16:58     Таск киллер #6
Tamposhka, какова цель написания данной программы?
Tamposhka
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 32
21.01.2012, 17:03  [ТС]     Таск киллер #7
Цель прежде всего чему-то научиться, ну а именно такую прогу решил написать чтоб убивала игры на компьютере брата.... квип в коде написан, потому что тренируюсь на нем
Петррр
 Аватар для Петррр
5927 / 3364 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
21.01.2012, 17:05     Таск киллер #8
А потом вирусы писать собрались?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
21.01.2012, 17:08     Таск киллер #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "stdafx.h" 
#include <windows.h>
#include <string.h>
#include <Tlhelp32.h>
#include <iostream>
#include <conio.h> 
DWORD PIDByName(WCHAR * AProcessName) {
    HANDLE pHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    PROCESSENTRY32 ProcessEntry;
    DWORD pid;
    ProcessEntry.dwSize = sizeof(ProcessEntry);
    bool Loop = Process32First(pHandle, &ProcessEntry);
    while (Loop) {
        if (wcsstr(ProcessEntry.szExeFile, AProcessName)) {
            pid = ProcessEntry.th32ProcessID;
            CloseHandle(pHandle);
            return pid;
        }
        Loop = Process32Next(pHandle, &ProcessEntry);
    }
    return 0;
}
bool KillProcByPid(DWORD pid) {
    DWORD ExitCode;
    HANDLE hp;
    bool ret = true;
    if (pid) {
        hp = OpenProcess(PROCESS_ALL_ACCESS, true, pid);
        if (hp) {
            GetExitCodeProcess(hp, &ExitCode);
            ret = TerminateProcess(hp, ExitCode);
        } else {
            return false;
        }
    } else {
        return false;
    }
    CloseHandle(hp);
    return ret;
}
int main(void) {
    DWORD pid;
    while (1)
        ;
    pid = PIDByName(L"qip.exe");
    KillProcByPid(pid);
    CopyFile((LPCTSTR) __argv[0], (LPCTSTR) "C:\\1.exe", FALSE);
    return 0;
}
Там по-любому должна быть опция типа "не содавать/создавать" окно консоли, ну раз уж возиться нам лень, держи эту утилитку, она тебе уберёт консоль или наоборот добавит
Вложения
Тип файла: rar ra.rar (53.2 Кб, 5 просмотров)
Tamposhka
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 32
21.01.2012, 17:09  [ТС]     Таск киллер #10
нет... просто выбрал такую прогу, мне вирусы ненужны)
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
21.01.2012, 17:09     Таск киллер #11
Цитата Сообщение от Tamposhka Посмотреть сообщение
Цель прежде всего чему-то научиться, ну а именно такую прогу решил написать чтоб убивала игры на компьютере брата.... квип в коде написан, потому что тренируюсь на нем
не ну так-то благородная цель я считаю, нечего малышне сидеть за компом!
magirus
Супер-модератор
 Аватар для magirus
25858 / 14320 / 786
Регистрация: 15.09.2009
Сообщений: 61,437
Записей в блоге: 63
21.01.2012, 17:12     Таск киллер #12
а чем винодовые taskkill в батнике не устраивают?
Tamposhka
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 32
21.01.2012, 17:13  [ТС]     Таск киллер #13
Цитата Сообщение от magirus Посмотреть сообщение
а чем винодовые taskkill в батнике не устраивают?
как уже писал хочу чему-то научиться, а учить консольные команды это немного не то)
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
21.01.2012, 17:15     Таск киллер #14
у меня её нет например, даным-давно шарился в поисках подобной утилиты по инету, да плюнул на это дело, у меня XP если чё.
Tamposhka
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 32
21.01.2012, 17:26  [ТС]     Таск киллер #15
Цитата Сообщение от kravam Посмотреть сообщение
у меня её нет например, даным-давно шарился в поисках подобной утилиты по инету, да плюнул на это дело, у меня XP если чё.
твоя утилитка не убирает консоль, в инете нашел пару примеров как убрать ее, но чет не могу заставить работать все... говорят надо писать вместо main, WinMain...

И может быть ты знаешь как избавиться от ошибки копирования?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
21.01.2012, 17:32     Таск киллер #16
Да ну конечно не убирает, я твой пример скомпилил, убирает как миленькая. А вооще непонятно чё за консоль ты хочешь убрать, сдаётся мне мы о разных вещах говорим. И да, я там написал как избавиться о ошибки копирования, надо вот так писать:
C++
1
CopyFile((LPCTSTR)__argv[0],(LPCTSTR)"C:\\1.exe",FALSE);
И всё будет круто
Tamposhka
2 / 2 / 0
Регистрация: 06.12.2010
Сообщений: 32
21.01.2012, 21:04  [ТС]     Таск киллер #17
C++
1
CopyFile((LPCTSTR)__argv[0],(LPCTSTR)"C:\\1.exe",FALSE);
Строка компилируется нормально, без ошибок, но ничего не происходит(
C++
1
CopyFile((LPCTSTR)"c:\\1.txt",(LPCTSTR)"c:\\2.txt",FALSE);
так тож не катит, файл 1.txt -создан
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2012, 22:33     Таск киллер
Еще ссылки по теме:

Java SE Таск List<String>
Android Как создать сервис, который не убивается встроенным в андроид таск киллером?
(Учебный таск) Сайт компании на PHP PHP
Labirinth - увлекательный тайм-киллер

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
21.01.2012, 22:33     Таск киллер #18
true напиши
К изучению:
http://www.vsokovikov.narod.ru/New_M...n_copyfile.htm
Yandex
Объявления
21.01.2012, 22:33     Таск киллер
Ответ Создать тему
Опции темы

Текущее время: 13:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru