Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Информация о процессе 
V
    Опции темы
MoLeX
Дата 11.8.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Привет.
Как получить информацию о всех запущенных процессов, а точнее надо: название файла, заголовок окна, путь

Добавлено через 5 секунд
 smile

Добавлено через 1 минуту и 32 секунды
Код

win = FindWindow("TApplication", 0);

while(1)
{
        kol_proc++;
        if( ! GetNextWindow(win, GW_HWNDNEXT) )  break;

        win = GetNextWindow(win, GW_HWNDNEXT); 
        GetWindowText(win, nam_proc, 255);      
        if( (AnsiString)nam_proc != "" )
                Memo1->Lines->Add((AnsiString)nam_proc);
}


не-то чтобы хотелось =(


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Lazin
Дата 11.8.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



CreateToolhelp32Snapshot, Process32First, Process32Next
интересно, сколько раз нужно ответить на этот вопрос, что-бы его перестали задавать?
PM MAIL Skype GTalk   Вверх
MoLeX
Дата 11.8.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Код

        HANDLE HS = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        PROCESSENTRY32 P;
        P.dwSize = sizeof (PROCESSENTRY32);

        if (Process32First(HS, &P))
                do
                {
                        Memo1->Lines->Add((AnsiString)P.szExeFile);

                } while (Process32Next(HS, &P));
        CloseHandle(HS);



Lazin, я не нашел как вывести путь 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Lazin
Дата 11.8.2009, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



ф-ей GetModuleFileName
PM MAIL Skype GTalk   Вверх
GipsySh
Дата 22.1.2010, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пожалуй, присоединюсь в эту тему smile
Подскажите, как получить кол-во потоков, запущенных приложением, в конкретный момент времени?

Попробовала использовать cntThreads из структуры PROCESSENTRY32, про которую MSDN говорит:
Код

typedef struct tagPROCESSENTRY32 {
  DWORD     dwSize;
  DWORD     cntUsage;
  DWORD     th32ProcessID;
  ULONG_PTR th32DefaultHeapID;
  DWORD     th32ModuleID;
  DWORD     cntThreads;
  DWORD     th32ParentProcessID;
  LONG      pcPriClassBase;
  DWORD     dwFlags;
  TCHAR     szExeFile[MAX_PATH];
} PROCESSENTRY32, *PPROCESSENTRY32;


MSDN поведал про cntThreads:
cntThreads - The number of execution threads started by the process.

НО! Судя по всему, поле cntThreads хранит только начальное значение и со временем не изменяется (т.е., например, процесс запустил 80 потоков изначально, а через час еще 10. Но если через час снова считать это значение, то оно все равно будет 80, а не 90 :()...
А как сделать так, чтобы при чтении по таймеру кол-во потоков процесса обновлялось? 

Это сообщение отредактировал(а) GipsySh - 22.1.2010, 12:02
PM MAIL   Вверх
Lazin
Дата 22.1.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



перебрать потоки по одному и посчитать
PM MAIL Skype GTalk   Вверх
GipsySh
Дата 22.1.2010, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, это вариант! Lazin, спасибо! smile
Хотя интуитивно кажется, что должна быть какая-нибудь стандартная функция... Но изучение MSDN'а все равно пока не увенчивается успехами в этом направлении :( 
Поэтому, видимо, последую Вашему совету smile
PM MAIL   Вверх
GipsySh
Дата 22.1.2010, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А на самом деле все оказалось проще, как я и чувствовала smile. Может, кому-то пригодится:

перед тем, как считывать значение cntThreads нужно просто еще раз сделать "снимок" информации о процессах (что вполне логично): 

Код

HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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