powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос: Как перечислить список задач винды и нужную убить???
5 сообщений из 5, страница 1 из 1
Вопрос: Как перечислить список задач винды и нужную убить???
    #33126856
Maktub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос: Как перечислить список задач винды и нужную убить???

Пример:
Нужно перед запуском моего приложения закрыть все документы связанные с Excel-ем и закрыть сам Excel.

Пробовал Через EnumWindows(), но не очень хорошо получается
...
Рейтинг: 0 / 0
Вопрос: Как перечислить список задач винды и нужную убить???
    #33126880
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Грубое убийство (без всяких запросов на сохранение). Если goto смущает, замените на while :)
Код: plaintext
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.
////---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <registry.hpp>
#include <SysUtils.hpp>
#include <tlhelp32.h>
////---------------------------------------------------------------------------
bool FindAndKillTheProc(AnsiString m_proc)
{
bbbbbb:
PROCESSENTRY32 PC32;
HANDLE hnd=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0 );
if ((int)hnd==- 1 )goto bbbbbb;
PC32.dwSize=sizeof(PC32);
bool i=Process32First(hnd,&PC32);
while (i)
        {
        AnsiString m_process = PC32.szExeFile;
        m_process = m_process.LowerCase();
        if (m_process.Pos(m_proc))
                {
                LPDWORD  ECode;
                HANDLE hPR=OpenProcess(PROCESS_TERMINATE,true,PC32.th32ProcessID);
                TerminateProcess(hPR,GetExitCodeProcess(hPR, ECode));
                CloseHandle(hnd);
                return true;
                }
        i=Process32Next(hnd,&PC32);
        }
CloseHandle(hnd);
return false;
}
////==========================================================================
...
Рейтинг: 0 / 0
Вопрос: Как перечислить список задач винды и нужную убить???
    #33126901
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2) вариант помягче (процессор грузит - мало не покажется :)
Код: plaintext
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.
//---------------------------------------------------------------------------
bool EnumWindowsProc(HWND hwnd,long lparam)
{
try
	{
	long retVal;
	char sSave[ 255 ];
	retVal = (long)::GetWindowTextLength(hwnd);
	::GetWindowText(hwnd,(LPTSTR)sSave,retVal+ 1 );
	strResult = strResult + sSave;
	if (strstr(strlwr(sSave),"Excel")!= 0 )PostMessage (hwnd, WM_QUIT,  0 ,  0 );
	return true;
	}
catch (Exception &exception)
	{
	return false;
	}
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
LPARAM lParam =  0 ;
::EnumWindows((WNDENUMPROC)&EnumWindowsProc,lParam);
}
//---------------------------------------------------------------------------
...
Рейтинг: 0 / 0
Вопрос: Как перечислить список задач винды и нужную убить???
    #33128649
Maktub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упустил из виду что окно можно послать PostMessage (hwnd, WM_QUIT, 0, 0);
Все работает без проблем.
...
Рейтинг: 0 / 0
Вопрос: Как перечислить список задач винды и нужную убить???
    #33129911
foo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
foo
Гость
Для NT/2000/XP/2003 Serever можно использовать NTQuerySystemInformation();
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос: Как перечислить список задач винды и нужную убить???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]