Определить, запущено приложение или нет...

  • Автор темы Alkinoy
  • Дата начала

Alkinoy

Guest
Определить, запущено приложение или нет...

Есть скрипт, который периодически запускается. Он должен проверять, запущено ли указанное приложение или нет, и в зависимости от результатов выполнять некоторые действия... Как такое можно выполнить? Из исходных данных - знаем имя приложения, и его PID. Система - Win2000. Заранее спасибо.
 

Rezec

По пиву? (socket80)
Знания по ВинАПИ тебе помогут, поищи на форумах пи С++, Делфи, ВБ.
 

Verk

Guest
Человек интересуется можно ли сделать с помощью php...
 

Alkinoy

Guest
может я ошибаюсь, но по моему в РНР функций для работы с АПИ мало и все они экспериментальные. Или я не прав?
 

Ворон

Guest
Как вариант "через ...". Содрано с стандартного алгоритма "симофоров". При запуске скрипта в файле-бд-шередмымре пишеться единица. При окончании 0 (или обнуление по каккомуто дельта т).
Скрипт №2 обращаеться к файлу-бд-шередмымре и проверяет что там.
 

Alkinoy

Guest
дык надо проверить не запущен ли СКРИПТ, а не запущена ли ПРОГРАММА! Обычное приложение.
 

Verk

Guest
Попробуй через system() вызывать какую-нибудь утилитку проверяющую наличие нужного процесса.
 

young

Новичок
Есть вариант -
1) Написать на C++ бинарник выплевывющий в STDOUT список всех запущенных процесов
2) Написать php скрипт, который его юзает
 

Alkinoy

Guest
наверное так и придется делать. Только уже проще на С++ нарисовать программку, которая периодически будет проверять налдичие указанного процесса (приложения) и вызывать скрипт с параметрами в строке запроса. так проще, вроде. Жаль, я думал можно самим РНР. Ну да ладно. Спасибо за идеии.
 

deek

Новичок
1) запускать программку на С, которая возвращает 1, если процесс с таким PID запущен, и 0, если нет.

#include <stdlib.h>
#include <windows.h>

int main(int argc, char* argv[])
{
HANDLE hProc;
if (hProc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, (DWORD) atoi(argv[1])))
{
CloseHandle(hProc);
return 1;
}
else
return 0;
}

2) запускать php скрипт для проверки, запущен ли процесс с таким PID.
<?php

$pid = "8"; // process System
exec(' ...\pinf.exe '.$pid, $out, $ret);

if ($ret == 1)
{
// process is running
}
else
{
// no such process or an error occured
}

?>
 
Сверху