Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
7 / 7 / 0
Регистрация: 12.11.2010
Сообщений: 55

Отследить запуск проги

21.03.2011, 13:44. Показов 7268. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Мне тут нужно написать код для таких действий
1) отслеживание запуска программы
2)Label1->Caption=" тут название запущенной программы";
3)если программа закрыта Label1->Caption="";
Так вот что сделать, чтобы реализовать это?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.03.2011, 13:44
Ответы с готовыми решениями:

Запуск проги не компе с неустановленным билдером
Подскажите плиз что нужно сделать чтобы простая консольная программа, которая читает и записывает иформацию в блокнот (что то типа учета...

Как отследить из проги на Си завершение другой проги
Есть две программы, одна написана не мной и исходников нет (main), вторую я пытаюсь написать сам для реализации ряда дополнительных...

Можно ли отследить работу portable проги на компе
Добрый день! Хочу задать такой вопрос: можно ли отследить работу portable проги на компе? (да/нет) Ситуация: на работе заставили...

23
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
22.07.2011, 08:32
Лучший ответ Сообщение было отмечено как решение

Решение

Студворк — интернет-сервис помощи студентам
Поделитесь исходником, вдруг там что подправить можно

Добавлено через 1 час 42 минуты
Попробовал ради интереса. Информирует только о запуске.
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
HWND Wnd;
char buff[127];
AnsiString win;
int wc;
bool found;
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 Memo1->Clear();
 Memo2->Clear();
 Wnd = GetWindow(Handle, GW_HWNDFIRST);
 while (Wnd != 0)
 {
  if ((Wnd != Application->Handle)&&(GetWindowText(Wnd, buff, sizeof(buff)) != 0))
  {
   GetWindowText(Wnd, buff, sizeof(buff));
   Memo1->Lines->Add(StrPas(buff));
  }
  Wnd = GetWindow(Wnd, GW_HWNDNEXT);
 }
 Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 
 Wnd = GetWindow(Handle, GW_HWNDFIRST);
 while (Wnd != 0)
 {
  if ((Wnd != Application->Handle)&&(GetWindowText(Wnd, buff, sizeof(buff)) != 0))
  {
   GetWindowText(Wnd, buff, sizeof(buff));
   win=StrPas(buff);
   wc=Memo1->Lines->Count;
   found = false;
   for (int t=0; t<wc; t++)
   {
    if (win==Memo1->Lines->Strings[t])
    {
     found=true;
     break;
    }
   }
   if (!found)
   {
    Memo1->Lines->Add(win);
    Memo2->Lines->Add("Запустилось: "+win);
   }
  }
  Wnd = GetWindow(Wnd, GW_HWNDNEXT);
 }
}
Загрузка процессора: 0

0
 Аватар для Arnike
23 / 23 / 4
Регистрация: 26.12.2008
Сообщений: 142
22.07.2011, 14:27
Вот таким образом я ищу процесс по имени EXE файла
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
bool GetProcessbyExeName(String ExeName)
{
    DWORD Pid;
    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(PROCESSENTRY32);
    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
    if(hProcessSnap == INVALID_HANDLE_VALUE)
    {
        Application->MessageBox(L"Ошибка",L"Ошибка",MB_OK|MB_ICONERROR);
        return false;
    }
    if(Process32First(hProcessSnap,&pe32))
    {
        do
        {
            String S = pe32.szExeFile;
            if(S.LowerCase() == ExeName.LowerCase())
            {
                CloseHandle(hProcessSnap);
                return true;
            }
        }while(Process32Next(hProcessSnap,&pe32));
    }
    CloseHandle(hProcessSnap);
    return false;
}
Это код таймера
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
ExesList->LoadFromFile(ProgPath + "//ExeFiles.hmt");
for(int i = 0;i < ExesList->Count;i++)
{
    if(GetProcessbyExeName(ExesList->Strings[i]))
    {
        Ini->WriteInteger("TimeLog",ExesList->Strings[i],Ini->ReadInteger("TimeLog",ExesList->Strings[i],0)+60);
    }
    if(ExeLog->Count == 0)
    {
         if(Ini->ReadBool("TimeLogging",ExesList->Strings[i],false))
         {
             Ini->WriteDateTime("Logging",ExesList->Strings[i],Date() + Time());
             ExeLog->Add(ExesList->Strings[i]);
         }
    }
    else
    {
        if(Ini->ReadBool("TimeLogging",ExesList->Strings[i],false))
        {
            bool StringExists = false;
            for(int j = 0;j < ExeLog->Count;j++)
            {
                if(ExeLog->Strings[j] == ExesList->Strings[i])
                {
                    StringExists = true;
                }
            }
            if(!StringExists)
            {
                Ini->WriteDateTime("Logging",ExesList->Strings[i],Date() + Time());
                ExeLog->Add(ExesList->Strings[i]);
            }
        }
    }
}
При "слежке" за одним процессом проблем никаких если их становится 10 тогда загрузка около 20% и так далее.

Добавлено через 32 секунды
Да и искать нужно именно процесс а не окно

Добавлено через 4 минуты
Да и еще нагрузка само собой при срабатывании таймера мне бы хотелось иметь возможность отслеживать все с точностью до секунды...
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
22.07.2011, 14:29
У вас там сплошные чтение/запись в файл, неужели нельзя всё в памяти держать?
0
 Аватар для Arnike
23 / 23 / 4
Регистрация: 26.12.2008
Сообщений: 142
22.07.2011, 18:11
Можно конечно но основная проблема не в этом и появилась идея буду просто получать список всех процессов и работать со строковым списком без постоянного поиска по процессам позже отпишу о результате
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2011, 18:11
Помогаю со студенческими работами здесь

запуск проги на сервере
Как сделать чтобы html документ запускал программу?, если нельзя, то как сделать чтоб она постоянно работала на сервере?

Запуск проги с параметром
ПРИМЕР:Двойной клик по файлу *.doc - запускается Word и открывает выбраный файл. ВОПРОС: как узнает что с помощью моей программы...

Убрать пароль на запуск проги
Всем привет. Вчера что бы избежать установку ненужных прог установил новую учетку с правами админа.со старой админа убрал. Проблема в том...

запуск exe с параметрами из проги
Добрый день. нужно запустить следующее приложение с дополнительными параметрами: C:\Program FIles\csptest.exe -passwd -def -container...

vs c++ 2012 запуск проги на другом пк
- собрана релиз версия - отключены зависимости _________________ при запуске требует MSVCP110.dll и MSVCR110.dll в...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru