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

Узнать запущен ли процесс и выполнить действие

29.07.2014, 20:39. Показов 8864. Ответов 77
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Узнать запущен ли процесс и выполнить действие

Имя кнопки:cleaner
Кнопка должна менять название в зависимости запущено ли приложение cleaner.exe
cleaner(1) - Имя кнопки запущенного приложения
cleaner(0) - Имя кнопки не запущенного приложения
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.07.2014, 20:39
Ответы с готовыми решениями:

Как узнать запущен ли процесс?
Надо узнать запущен ли процесс и предпрянять какие либо действия.

Проверка на запущен ли Процесс С++
Добрый день, нужно как то проверять запущен ли процесс, если не запущен, ничего не выводить, а если запущен вывести к примеру...

Выполнять действие, если процесс запущен
Программа должна выполняться, когда необходимый процесс висит в диспетчере задач. Можно еще, чтоб было активное окно этого процесса. ...

77
Заблокирован
30.07.2014, 20:44  [ТС]
Студворк — интернет-сервис помощи студентам
проверка на существование папок
если нужная папка не существует пункт нужный скрываеться

Добавлено через 1 минуту
Папки я потом сам назначу которые потребуются
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
30.07.2014, 20:44
DeadHipo, ты что нибудь в ситуации понимаешь? Я уже нет... И где там функция поиска процесса? Что это вообще?
Gurellol, вот образец проекта, составленного по твоим объяснениям из сообщения 55, тебе там, в принципе, только в меню свои программы прописать и пути изменить. Если и это не то, тогда кто-то из нас двоих явный ...
Вложения
Тип файла: rar source1.rar (82.8 Кб, 12 просмотров)
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
30.07.2014, 20:50
D1973, её там нет, но идею понял надеюсь.
Попробуй
SourceCode.rar
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
30.07.2014, 21:01
DeadHipo, я посмотрел, но вот, имхо, такой вариант не проканает
C++
1
2
AnsiString caption = ((TMenuItem *)Sender)->Caption;
BitBtn1->Enabled = IsProcessRun(caption.c_str());
В этом случае в качестве кэпшена меню пришлось бы писать имя процесса, т.е. не "Калькулятор", к примеру, а "calc.exe". И потом, чтобы выполнить какую-нибудь нестандартную программу, нужен полный путь, а имя процесса, как правило, только название ехе-файла. Поэтому в своем предложении я остановился именно на двух переменных: одна для ShellExecute с полным путем, вторая (из первой получается путем ExtractFileName) имя процесса для поиска.
0
Заблокирован
30.07.2014, 21:02  [ТС]
D1973 у вас происходит запуск через Full Path

Как запустить вот с таким ключом через FullPath revLoader.exe -launch program.exe -key -key
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
30.07.2014, 21:07
Цитата Сообщение от Gurellol Посмотреть сообщение
revLoader.exe
это основной ехе-шник для запуска. Он где-то лежит, в какой-то папке. Вот и пропиши к нему полный путь. А вот это
Цитата Сообщение от Gurellol Посмотреть сообщение
-launch program.exe -key -key
это уже параметры запуска. Т.е. примерно это выглядит так
C++
1
2
 FullPath = "C:\\FOLDER1\\revLoader.exe";
ShellExecute(NULL,"open",FullPath.c_str(),"-launch program.exe -key -key",NULL,SW_SHOW);
0
Заблокирован
30.07.2014, 21:30  [ТС]
C++
1
2
3
ShellExecute(NULL,"open",FullPath.c_str(),"-launch program.exe -key -key",NULL,SW_SHOW);
ShellExecute(NULL,"open",FullPath.c_str(),"-launch program.exe -key -key",NULL,SW_SHOW);
ShellExecute(NULL,"open",FullPath.c_str(),"-launch program.exe -key -key",NULL,SW_SHOW);
ничего не дописывать в конце типа break;

Добавлено через 17 секунд
их много будет

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch(OE)
    {
      case 0 : FullPath = "revLoader.exe"; break;
      case 1 : FullPath = "revLoader.exe"; break;
      case 2 : FullPath = "revLoader.exe"; break;
    }
   Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  ShellExecute(NULL,"open",FullPath.c_str(),"-launch program.exe -key -key",NULL,SW_SHOW);
  ShellExecute(NULL,"open",FullPath.c_str(),"-launch program.exe -key -key",NULL,SW_SHOW);
  ShellExecute(NULL,"open",FullPath.c_str(),"-launch program.exe -key -key",NULL,SW_SHOW);
}
Добавлено через 49 секунд
примерно так

Добавлено через 1 минуту
revLoader.exe
У него несколько связок ключей
Каждая связка ключей своя функция
И это все один фаил

Добавлено через 2 минуты
D1973,кстати да интересный метод определения запущенного приложения
Он все правильно определяет,когда запущено а когда нет

Не зная exe кнопка определяет правильно
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
30.07.2014, 21:33
Тогда введи еще одну глобальную переменную Params (вверху, там где у тебя сейчас написано
C++
1
AnsiString FullPath;
напиши
C++
1
AnsiString FullPath, Params;
В событии клика по пункту меню у тебя есть конструкция switch
вот там и прописывае параметры для каждого пункта меню
C++
1
2
3
4
5
6
7
FullPath = "C:\\FOLDER1\\revLoader.exe"
switch(OE)
{
  case 0 : Params = "-launch program1.exe -key1 -key1"; break;
  case 1 : Params = "-launch program2.exe -key2 -key2"; break;
  case 2 : Params = "-launch program3.exe -key3 -key3"; break;
}
Тогда вызов ShellExecute изменится так
C++
1
ShellExecute(NULL,"open",FullPath.c_str(),Params.c_str(),NULL,SW_SHOW);
0
Заблокирован
30.07.2014, 21:51  [ТС]
Если запустить программу и закрыть в течении короткого времени
Всплывает мелкая ошибка "Вы можете запустить только одну копию"
Если подождать 15 сек. ошибки не будет так как процесс пропадает..

Добавлено через 7 минут
28 строка ошибка

Checking project dependencies...
Compiling Project1.cbproj (Debug, Win32)
bcc32 command line for "Unit1.cpp"
c:\program files (x86)\embarcadero\studio\14.0\bin\bcc32. exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\vcl";"C:\Program Files (x86)\Embarcadero\Studio\14.0\include\bo ost_1_39\boost\tr1\tr1";"C:\Program
Files (x86)\Embarcadero\Studio\14.0\include\bo ost_1_39";"c:\program files (x86)\embarcadero\studio\14.0\include";" c:\program files
(x86)\embarcadero\studio\14.0\include\di nkumware";"c:\program files (x86)\embarcadero\studio\14.0\include\wi ndows\crtl";"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\sdk";"c:\program files (x86)\embarcadero\studio\14.0\include\wi ndows\rtl";"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\vcl";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32" -y -Q -k -r- -c -tR -tM -tW -C8
-o.\Win32\Debug\Unit1.obj -w-par -Od -v -vi- -H=.\Win32\Debug\Project1.pch -H Unit1.cpp
[bcc32 Error] Unit1.cpp(28): E2379 Statement missing ;
Full parser context
Unit1.cpp(23): parsing: void _fastcall TForm1::N1Click(TObject *)
Failed
Elapsed time: 00:00:00.1

Добавлено через 48 секунд
C++
1
switch(OE)
Добавлено через 2 минуты
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
68
69
70
71
72
73
74
75
76
77
#include <vcl.h>
#pragma hdrstop
#include <Tlhelp32.h>
#include "Unit1.h"
 
#pragma package(smart_init)
#pragma resource "*.dfm"
 
 
TForm1 *Form1;
 
char* pName;
AnsiString FullPath;
AnsiString FullPath, Params;
int OE;
String Capt;
 
__fastcall TForm1::TForm1(TComponent* Owner)
   :TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
   OE = ((TMenuItem *)Sender)->Tag;
   Capt = ((TMenuItem *)Sender)->Caption;
   BitBtn1->Enabled = true;
   FullPath = "revLoader.exe"
   switch(OE)
  {
  case 0 : Params = "-launch hl.exe -key -key -key"; break;
  case 1 : Params = "-launch hl.exe -key -key -key"; break;
  case 2 : Params = "-launch hl.exe -key"; break;
}
   Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  ShellExecute(NULL,"open",FullPath.c_str(),"-launch hl.exe -key -key",NULL,SW_SHOW);
}
//---------------------------------------------------------------------------
bool IsProcessRun(char* pName)
{
  HANDLE Hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if(Hndl == INVALID_HANDLE_VALUE) return false;
  PROCESSENTRY32 ProcessEntry;
  ProcessEntry.dwSize = sizeof(ProcessEntry);
  bool Loop = Process32First(Hndl, &ProcessEntry);
  while (Loop)
   {
     if (strcmp(ProcessEntry.szExeFile, pName) == 0)
       {
         CloseHandle(Hndl);
         return true;
       }
     Loop = Process32Next(Hndl, &ProcessEntry);
   }
  return false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  pName = AnsiString(ExtractFileName(FullPath)).c_str();
  if(! IsProcessRun(pName))
   {
     BitBtn1->Caption = Capt + " [0]";
     BitBtn1->Enabled = true;
   }
  else
   {
     BitBtn1->Caption = Capt + " [1]";
     BitBtn1->Enabled = false;
   }
  Application->ProcessMessages();
}
//---------------------------------------------------------------------------
Добавлено через 21 секунду
Checking project dependencies...
Compiling Project1.cbproj (Debug, Win32)
bcc32 command line for "Unit1.cpp"
c:\program files (x86)\embarcadero\studio\14.0\bin\bcc32. exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\vcl";"C:\Program Files (x86)\Embarcadero\Studio\14.0\include\bo ost_1_39\boost\tr1\tr1";"C:\Program
Files (x86)\Embarcadero\Studio\14.0\include\bo ost_1_39";"c:\program files (x86)\embarcadero\studio\14.0\include";" c:\program files
(x86)\embarcadero\studio\14.0\include\di nkumware";"c:\program files (x86)\embarcadero\studio\14.0\include\wi ndows\crtl";"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\sdk";"c:\program files (x86)\embarcadero\studio\14.0\include\wi ndows\rtl";"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\vcl";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32" -y -Q -k -r- -c -tR -tM -tW -C8
-o.\Win32\Debug\Unit1.obj -w-par -Od -v -vi- -H=.\Win32\Debug\Project1.pch -H Unit1.cpp
[bcc32 Error] Unit1.cpp(14): E2238 Multiple declaration for 'FullPath'
[bcc32 Error] Unit1.cpp(13): E2344 Earlier declaration of 'FullPath'
[bcc32 Error] Unit1.cpp(29): E2379 Statement missing ;
Full parser context
Unit1.cpp(24): parsing: void _fastcall TForm1::N1Click(TObject *)
Failed
Elapsed time: 00:00:00.1
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
30.07.2014, 21:53
13-ю строку вообще удали. Я же писал ВМЕСТО AnsiString FullPath; напиши AnsiString FullPath, Params;
поставь ; в конце 28-й строки
в 40-й строке пиши
C++
1
ShellExecute(NULL,"open",FullPath.c_str(),Params.c_str(),NULL,SW_SHOW);
0
Заблокирован
30.07.2014, 22:03  [ТС]
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
68
69
70
71
72
73
74
75
76
77
#include <vcl.h>
#pragma hdrstop
#include <Tlhelp32.h>
#include "Unit1.h"
 
#pragma package(smart_init)
#pragma resource "*.dfm"
 
 
TForm1 *Form1;
 
char* pName;
AnsiString FullPath;
AnsiString FullPath, Params;
int OE;
String Capt;
 
__fastcall TForm1::TForm1(TComponent* Owner)
   :TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
   OE = ((TMenuItem *)Sender)->Tag;
   Capt = ((TMenuItem *)Sender)->Caption;
   BitBtn1->Enabled = true;
   FullPath = "revLoader.exe";
   switch(OE)
    {
      case 0 : Params = "-launch hl.exe -key -key -key"; break;
          case 1 : Params = "-launch hl.exe -key -key -key"; break;
          case 2 : Params = "-launch hl.exe -key"; break;
    }
   Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  ShellExecute(NULL,"open",FullPath.c_str(),Params.c_str(),NULL,SW_SHOW);
}
//---------------------------------------------------------------------------
bool IsProcessRun(char* pName)
{
  HANDLE Hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if(Hndl == INVALID_HANDLE_VALUE) return false;
  PROCESSENTRY32 ProcessEntry;
  ProcessEntry.dwSize = sizeof(ProcessEntry);
  bool Loop = Process32First(Hndl, &ProcessEntry);
  while (Loop)
   {
     if (strcmp(ProcessEntry.szExeFile, pName) == 0)
       {
         CloseHandle(Hndl);
         return true;
       }
     Loop = Process32Next(Hndl, &ProcessEntry);
   }
  return false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  pName = AnsiString(ExtractFileName(FullPath)).c_str();
  if(! IsProcessRun(pName))
   {
     BitBtn1->Caption = Capt + " [0]";
     BitBtn1->Enabled = true;
   }
  else
   {
     BitBtn1->Caption = Capt + " [1]";
     BitBtn1->Enabled = false;
   }
  Application->ProcessMessages();
}
//---------------------------------------------------------------------------
Добавлено через 53 секунды
Опять ошибка,14 строка
Checking project dependencies...
Compiling Project1.cbproj (Debug, Win32)
bcc32 command line for "Unit1.cpp"
c:\program files (x86)\embarcadero\studio\14.0\bin\bcc32. exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\vcl";"C:\Program Files (x86)\Embarcadero\Studio\14.0\include\bo ost_1_39\boost\tr1\tr1";"C:\Program
Files (x86)\Embarcadero\Studio\14.0\include\bo ost_1_39";"c:\program files (x86)\embarcadero\studio\14.0\include";" c:\program files
(x86)\embarcadero\studio\14.0\include\di nkumware";"c:\program files (x86)\embarcadero\studio\14.0\include\wi ndows\crtl";"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\sdk";"c:\program files (x86)\embarcadero\studio\14.0\include\wi ndows\rtl";"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\vcl";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32" -y -Q -k -r- -c -tR -tM -tW -C8
-o.\Win32\Debug\Unit1.obj -w-par -Od -v -vi- -H=.\Win32\Debug\Project1.pch -H Unit1.cpp
[bcc32 Error] Unit1.cpp(14): E2238 Multiple declaration for 'FullPath'
[bcc32 Error] Unit1.cpp(13): E2344 Earlier declaration of 'FullPath'
Failed
Elapsed time: 00:00:00.1
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
30.07.2014, 22:03
Цитата Сообщение от Gurellol Посмотреть сообщение
AnsiString FullPath;
AnsiString FullPath, Params;
ты два раза переменную определил.
оставь только
C++
1
AnsiString FullPath, Params;
0
Заблокирован
30.07.2014, 22:11  [ТС]
DeadHipo,скоро твоё буду смотреть
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
30.07.2014, 22:13
Цитата Сообщение от Gurellol Посмотреть сообщение
DeadHipo,скоро твоё буду смотреть
Ты почти как мои преподователи в универе.
Моего варианта, скорее всего не будет, удачи
0
Заблокирован
30.07.2014, 23:41  [ТС]
Я всегда все варианты рассматриваю

Добавлено через 1 минуту
Где слово "это" там установлены разные ключи,происходит одно и тоже действие не то что надо

Добавлено через 34 секунды
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
68
69
70
71
72
73
74
75
76
#include <vcl.h>
#pragma hdrstop
#include <Tlhelp32.h>
#include "Unit1.h"
 
#pragma package(smart_init)
#pragma resource "*.dfm"
 
 
TForm1 *Form1;
 
char* pName;
AnsiString FullPath, Params;
int OE;
String Capt;
 
__fastcall TForm1::TForm1(TComponent* Owner)
   :TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
   OE = ((TMenuItem *)Sender)->Tag;
   Capt = ((TMenuItem *)Sender)->Caption;
   BitBtn1->Enabled = true;
   FullPath = "revLoader.exe";
   switch(OE)
    {
      case 0 : Params = "-launch hl.exe -key -key -key"; break;
      case 1 : Params = "-launch hl.exe -key -key -key"; break;//Это
      case 2 : Params = "-launch hl.exe -key -key -key"; break;//Это
    }
   Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  ShellExecute(NULL,"open",FullPath.c_str(),Params.c_str(),NULL,SW_SHOW);
}
//---------------------------------------------------------------------------
bool IsProcessRun(char* pName)
{
  HANDLE Hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if(Hndl == INVALID_HANDLE_VALUE) return false;
  PROCESSENTRY32 ProcessEntry;
  ProcessEntry.dwSize = sizeof(ProcessEntry);
  bool Loop = Process32First(Hndl, &ProcessEntry);
  while (Loop)
   {
     if (strcmp(ProcessEntry.szExeFile, pName) == 0)
       {
         CloseHandle(Hndl);
         return true;
       }
     Loop = Process32Next(Hndl, &ProcessEntry);
   }
  return false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  pName = AnsiString(ExtractFileName(FullPath)).c_str();
  if(! IsProcessRun(pName))
   {
     BitBtn1->Caption = Capt + " [0]";
     BitBtn1->Enabled = true;
   }
  else
   {
     BitBtn1->Caption = Capt + " [1]";
     BitBtn1->Enabled = false;
   }
  Application->ProcessMessages();
}
//---------------------------------------------------------------------------
Добавлено через 25 минут
Сейчас попробовал выбрать в меню другой пункт во время запущенного приложения
Меняется название кнопки(caption),но кнопка сама блокирована

А как ее вообще полностью заблокировать,чтобы даже caption не менялся ?
Или MainMenu полностью блокировать вместе с кнопкой на время запущенного приложения!

Добавлено через 8 минут
Сортировка пунктов меню по алфавиту

Добавлено через 47 минут
D1973 как я понял вы в своем варианте реализовали без реальной проверки процесса,а только визуально
Ну,то есть программа не знает сейчас точно запущенно приложение cleaner.exe
cleaner[1] - Приложение запущенно
cleaner[0] - Приложение не запущенно
Вы меня поняли,о чем я говорю.

Ок

Вы меня извините забыл,добавить в список задания одну мелочь
Программа должна зависеть от процесса(должна знать точно запущено приложение да или нет) cleaner.exe
Потому что так как мне нужно очищать папку по завершению процесса (Сама папка не должна удаляться,а только те файлы которые внутри ее: папки,логи,txt-файлы и др.)

Пункт "Очистка"в MainMenu
Очистка должна производиться по флагу
Пример:
Флаг установлен в меню - Программа производит очистку по завершению процесса
Флаг не установлен в меню - Программа не производит очистку по завершению процесса

Пример
C:\folder\*.* - Удалить без разбора все файлы которые в ней есть,но сама папка должна остаться
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,498
Записей в блоге: 3
31.07.2014, 05:32
Господа, я - пас!!!
0
Заблокирован
31.07.2014, 14:08  [ТС]
Кто поможет доделать?

Добавлено через 6 минут
D1973, вы знаете мою задачу и видели проект больше никто толком не понял кроме двоих
Поможете доделать ?

Добавлено через 5 минут


Добавлено через 1 минуту
Мне только вот осталось доделать!
И решить проблему с ключами которая выше написана
И всё!

Добавлено через 18 минут
Поможете ?

Добавлено через 24 минуты
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
68
69
70
71
72
73
74
75
76
#include <vcl.h>
#pragma hdrstop
#include <Tlhelp32.h>
#include "Unit1.h"
 
#pragma package(smart_init)
#pragma resource "*.dfm"
 
 
TForm1 *Form1;
 
char* pName;
AnsiString FullPath, Params;
int OE;
String Capt;
 
__fastcall TForm1::TForm1(TComponent* Owner)
   :TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
   OE = ((TMenuItem *)Sender)->Tag;
   Capt = ((TMenuItem *)Sender)->Caption;
   BitBtn1->Enabled = true;
   FullPath = "revLoader.exe";
   switch(OE)
    {
      case 0 : Params = "-launch hl.exe -key -key -key"; break;//Правильно запускает
      case 1 : Params = "-launch hl.exe -key -key -key"; break;//Не правильно запускает
      case 2 : Params = "-launch hl.exe -key -key -key"; break;//Не правильно запускает
    }
   Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  ShellExecute(NULL,"open",FullPath.c_str(),Params.c_str(),NULL,SW_SHOW);
}
//---------------------------------------------------------------------------
bool IsProcessRun(char* pName)
{
  HANDLE Hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if(Hndl == INVALID_HANDLE_VALUE) return false;
  PROCESSENTRY32 ProcessEntry;
  ProcessEntry.dwSize = sizeof(ProcessEntry);
  bool Loop = Process32First(Hndl, &ProcessEntry);
  while (Loop)
   {
     if (strcmp(ProcessEntry.szExeFile, pName) == 0)
       {
         CloseHandle(Hndl);
         return true;
       }
     Loop = Process32Next(Hndl, &ProcessEntry);
   }
  return false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  pName = AnsiString(ExtractFileName(FullPath)).c_str();
  if(! IsProcessRun(pName))
   {
     BitBtn1->Caption = Capt + " [0]";
     BitBtn1->Enabled = true;
   }
  else
   {
     BitBtn1->Caption = Capt + " [1]";
     BitBtn1->Enabled = false;
   }
  Application->ProcessMessages();
}
//---------------------------------------------------------------------------

Что делать когда даже вместо нужно запускает не то что надо?

Добавлено через 3 часа 4 минуты
Кто поможет а ?

Добавлено через 1 час 47 минут
C++
1
2
3
case 0 : FullPath = "revLoader.exe","-launch hl.exe -key key -key"; break;
case 1 : FullPath = "revLoader.exe","-launch hl.exe -key key -key"; break;
case 2 : FullPath = "revLoader.exe","-launch hl.exe -key"; break;
Добавлено через 32 секунды
Разные параметры а запускается одно и тоже

Добавлено через 21 минуту
DeadHipo,как кнопку разблокировать после выбора
В MainMenu выбрал пункт, кнопка блокирована после выбора
Нельзя нажать
0
 Аватар для uhx
60 / 60 / 19
Регистрация: 11.07.2013
Сообщений: 305
02.08.2014, 06:05
Gurellol, чувак, смотри:
открываешь гугл (если ты там не забанен), качаешь MVS 2012, затем скачиваешь кинжку для чайников по C++ (Герберт Шилдт подойдет) и читаешь ее, параллельно переписывая весь код в MVS и тыкая кнопку F5 (компиляция и запуск проекта). Как только ты ее прочтешь и поймешь ХОТЯ БЫ основы, ты можешь лезть в билдер.

А по сути, кнопка выключается из-за этой строчки:
C++
1
BitBtn1->Enabled = false;
Удачи.
Правда, не стоит лезть в билдер с нулевыми знаниями. Или хотя бы книги по билдеру почитайте, как там чего. Но я бы советовал начать с консолек.

Добавлено через 1 минуту
Хотя, если бы вы могли нормально, конструктивно изложить свои мысли - тема бы уложилась в одну страницу. Задумайтесь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.08.2014, 06:05

Если процесс запущен, то выполнить
Как реализовать такое условие: Есть прогресс бар (вечный-Marquee). Сначала он невидим, но: Если процесс &quot;абв&quot; запущен, то он...

Как узнать, запущен ли процесс?
Добрый день. Как узнать запущен ли процесс? using System.Diagnostics; ... protected Process procs; ... p =...

Как узнать откуда запущен процесс
Как можно узнать папку, откуда работает процесс. Например фаил dllhost.exe запущен с папки c:/windows/system32/dllhost.exe. Возможно ли как...

Узнать что процесс запущен системой
С помощью System.Diagnostics.Process я могу получить список процессов. А как узнать, какие из процессов запущены системой (системные), а...

Как узнать, что процесс не запущен
Смысл такой: таймер проверяет запущен ли процесс, например, &quot;notepad&quot; и если да, то label1.text = &quot;Процесс запущен&quot;, если нет, то...


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

Или воспользуйтесь поиском по форуму:
78
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru