Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2013, 18:27   #1
Turboman
Пользователь
 
Регистрация: 28.01.2013
Сообщений: 12
По умолчанию Условие если

Здравствуйте. Мой проект выполняет действие по мониторингу процессов (это программа серфинга сайтов одной системы САР), и при отсутствии процесса wasppacer.exe запускает его снова из указанной папки. Но как только обновляется программа серфинга, запускается updater.exe, а процесс wasppacer.exe исчезает из процессов. Вследствие чего, мой проект инициирует запуск wasppacer.exe снова, не успев обновить серфинг. Бывает до 10 updater.exe работает, пока первый не обновит, тогда в процессах снова запустится wasppacer.exe и процесс обновления завершится, но те updater.exe, что остались висеть в процессах, также обновятся и запустится 10 копий (образно говоря).

В сам алгоритм нужно внести условие "если", тоесть если запущен updater.exe – wasppacer. exe не запускать.
кто поможет f_52651276e8db19cf.zip
Turboman вне форума Ответить с цитированием
Старый 23.02.2013, 01:05   #2
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Turboman, добавь новую функцию проверки процесса:

Код:
uses TlHelp32;

function ProcessExists(FProcess: string): Boolean;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := False;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(FProcess))
      or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(FProcess)))
    then
    begin
      Result := True;
      Break;
    end;
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;
И само условие:

Код:
  //если запущен updater.exe
  if ProcessExists('updater.exe') then
  begin
    //wasppacer.exe не запускать
  end
Lardes вне форума Ответить с цитированием
Старый 23.02.2013, 10:52   #3
Turboman
Пользователь
 
Регистрация: 28.01.2013
Сообщений: 12
По умолчанию

Не понял собственно условия и этой функции

Цитата:
Сообщение от Lardes Посмотреть сообщение
Turboman, добавь новую функцию проверки процесса:

Код:
uses TlHelp32;

function ProcessExists(FProcess: string): Boolean;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := False;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(FProcess))
      or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(FProcess)))
    then
    begin
      Result := True;
      Break;
    end;
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;
И само условие:

Код:
  //если запущен updater.exe
  if ProcessExists('updater.exe') then
  begin
    //wasppacer.exe не запускать
  end
Turboman вне форума Ответить с цитированием
Старый 23.02.2013, 11:09   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Тогда вам надо читать основы Delphi, если не поняли.
Другие не поняли что вы хотите.
Человек_Борща вне форума Ответить с цитированием
Старый 23.02.2013, 11:23   #5
Turboman
Пользователь
 
Регистрация: 28.01.2013
Сообщений: 12
По умолчанию

куда мне вставить этот код??
Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Тогда вам надо читать основы Delphi, если не поняли.
Другие не поняли что вы хотите.
Turboman вне форума Ответить с цитированием
Старый 23.02.2013, 11:51   #6
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Цитата:
Сообщение от Turboman Посмотреть сообщение
Не понял собственно условия и этой функции
Функция проверяет существование процесса, если он существует, то возвращается True, в ином случае - False.

Цитата:
Сообщение от Turboman Посмотреть сообщение
куда мне вставить этот код??
В uses добавляешь TlHelp32, после {$R *.dfm} добавляешь код функции
Lardes вне форума Ответить с цитированием
Старый 23.02.2013, 11:54   #7
Turboman
Пользователь
 
Регистрация: 28.01.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Lardes Посмотреть сообщение
Функция проверяет существование процесса, если он существует, то возвращается True, в ином случае - False.


В uses добавляешь TlHelp32, после {$R *.dfm} добавляешь код функции
а как на счет????
это не работает бегин и комменты
И само условие:

Код:

//если запущен updater.exe
if ProcessExists('updater.exe') then
begin
//wasppacer.exe не запускать
end
Turboman вне форума Ответить с цитированием
Старый 23.02.2013, 12:01   #8
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Цитата:
Сообщение от Turboman Посмотреть сообщение
а как на счет????
Этот участок кода:

Код:
  //если запущен updater.exe
  if ProcessExists('updater.exe') then
  begin
    //wasppacer.exe не запускать
  end;
Вставляешь туда, куда нужно обработать условие. Прав Человек_Борща, изучай основы Delphi
Lardes вне форума Ответить с цитированием
Старый 23.02.2013, 12:08   #9
Turboman
Пользователь
 
Регистрация: 28.01.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Lardes Посмотреть сообщение
Этот участок кода:

Код:
  //если запущен updater.exe
  if ProcessExists('updater.exe') then
  begin
    //wasppacer.exe не запускать
  end;
Вставляешь туда, куда нужно обработать условие. Прав Человек_Борща, изучай основы Delphi
ты не понял- условие ничего не означает, как правильно написать?
Turboman вне форума Ответить с цитированием
Старый 23.02.2013, 12:11   #10
Turboman
Пользователь
 
Регистрация: 28.01.2013
Сообщений: 12
По умолчанию

Блин, еслибы я знал куда нужно вставить код- я бы не писал!
Я попросил помощи а не подсказок..
Спасибо
Turboman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие: ЕСЛИ ячейка непустая, то ... - как? Brandon Skywalker Microsoft Office Excel 11 16.02.2013 22:14
условие ЕСЛИ по клику кнопки johny_03 Microsoft Office Excel 2 29.03.2011 12:41
Условие: Если книга НЕ открыта ruavia3 Microsoft Office Excel 1 04.02.2010 11:35
Условие, если есть лист. agregator Microsoft Office Excel 5 08.12.2009 07:46
условие если значение = empty zetrix Microsoft Office Excel 0 30.10.2006 18:58