Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрытие окна, зная его процесс 
:(
    Опции темы
KuKHyT
Дата 17.1.2012, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.1.2012

Репутация: нет
Всего: нет



В-общем, такая проблема.
У меня есть список процессов, допустим:
mspaint.exe
game.exe
pop.exe
Мне нужно написать программу, которая бы закрывала все окна этих процессов.
Как это сделать - я без понятия.
Помогите, что-ли ;)

//Изначально суть в том, чтобы программа проверяла наличие флешки с определенным файлом в компьютере. Если её там нету - то она "пробегала" по всем процессам (процессы игр) и завершала их.
У меня все это получилось, но для закрытия процессов я использовал terminateprocess, что не очень хорошо. Ну а как воспользоваться другими вариантами, я без понятия.

Заранее спасибо!

Код программы, которая проверяет файл и "убивает" процессы.
Код

    #include "stdafx.h"
    #include "conio.h"
    #include <windows.h>
    #include <iostream>
    #include <Tlhelp32.h>
    #include <fstream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    using namespace std;
    int date[6];

int 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 testdate(void)
{   
    wchar_t lpReturnedString[100];
    HANDLE hFile;
    FILETIME ftCreate, ftAccess, ftWrite, lpLocalFileTime;
    SYSTEMTIME stUTC, stLocal;
    char lpszString[MAX_PATH];
    hFile = CreateFile(L"F:\\key.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    if(hFile != INVALID_HANDLE_VALUE)
    {
        if(!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
        {return 1;}
        FileTimeToLocalFileTime(&ftWrite, &lpLocalFileTime);
        FileTimeToSystemTime(&lpLocalFileTime, &stUTC);
        
        date[0]=stUTC.wYear;
        date[1]=stUTC.wMonth;
        date[2]=stUTC.wDay;
        date[3]=stUTC.wHour;
        date[4]=stUTC.wMinute;
        date[5]=stUTC.wSecond;}
    else
    CloseHandle(hFile);
    if (((((((date[0]==2012)&&(date[1]==1))&&(date[2]==16))&&(date[3]==21))&&(date[4]==1))&&(date[5]==2))) return 0;
    return 1;}

int testdate2(void)
{   
    wchar_t lpReturnedString[100];
    HANDLE hFile;
    FILETIME ftCreate, ftAccess, ftWrite, lpLocalFileTime;
    SYSTEMTIME stUTC, stLocal;
    char lpszString[MAX_PATH];
    hFile = CreateFile(L"F:\\key.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    if(hFile != INVALID_HANDLE_VALUE)
    {
        if(!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
        {return 1;}
        FileTimeToLocalFileTime(&ftWrite, &lpLocalFileTime);
        FileTimeToSystemTime(&lpLocalFileTime, &stUTC);
        
        date[0]=stUTC.wYear;
        date[1]=stUTC.wMonth;
        date[2]=stUTC.wDay;
        date[3]=stUTC.wHour;
        date[4]=stUTC.wMinute;
        date[5]=stUTC.wSecond;}
    else
    CloseHandle(hFile);
    if (((((((date[0]==2012)&&(date[1]==1))&&(date[2]==16))&&(date[3]==21))&&(date[4]==1))&&(date[5]==2))) return 0;
    return 1;}

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;}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
char string[100];
bool f=0;
int p1=1;
int p2=1;
int l=0;
DWORD pid;
p1=testdate();
p2=testdate2();
if ((p1==1)&&(p2==1)) {
pid = PIDByName(L"SWRepublicCommando.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"lotrbfme2.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"lotrbfme2ep1.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"game.dat");
l=KillProcByPid(pid);
pid = PIDByName(L"POP.EXE");
l=KillProcByPid(pid);
pid = PIDByName(L"MotherloadGoldium.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"il2fb.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"War World.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"OblivionLauncher.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"Oblivion.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"POP2.EXE");
l=KillProcByPid(pid);
pid = PIDByName(L"pop3.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"FireWarr.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"SC2.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"GAME.EXE");
l=KillProcByPid(pid);
pid = PIDByName(L"Pirates!.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"war3.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"LaunchBFII.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"BattlefrontII.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"jasp.EXE");
l=KillProcByPid(pid);
pid = PIDByName(L"UAWEA.exe");
l=KillProcByPid(pid);
pid = PIDByName(L"ra3_1.12.game");
l=KillProcByPid(pid);
pid = PIDByName(L"mspaint.exe");
l=KillProcByPid(pid);
};}

PM MAIL   Вверх
Dem_max
Дата 17.1.2012, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39





--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
KuKHyT
Дата 17.1.2012, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.1.2012

Репутация: нет
Всего: нет



Так. Посмотрел по форуму. Теперь задача более внятная. Нужно найти hwnd окна, зная имя процесса. Как?))
PM MAIL   Вверх
xvr
Дата 17.1.2012, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(KuKHyT @ 17.1.2012,  12:40)
Так. Посмотрел по форуму. Теперь задача более внятная. Нужно найти hwnd окна, зная имя процесса. Как?))

http://www.codeguru.com/forum/showthread.php?t=353149

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.