Перейти к содержимому

Фото
- - - - -

Мини-программа


  • Вы не можете создать новую тему
  • Please log in to reply
2 ответов в этой теме

#1 R3FLeX

R3FLeX

    Ыы

  • Пользователь
  • 397 сообщений
  • Откуда:Йыхви

Отправлено 07 ноября 2010 - 03:17

Вобщем суть такая.
Для работы одной программы нужна другая,но вторая частенько вылетает(закрывается без каких либо ошибок).нужно что бы программа проверяла список запущенных процессов,и если не находит нужный то запускала указанный в настройках.
Так вот хотел спросить на каком языке программирования такое реально осуществить.
и может кто хочет помочь с етим?делаю чисто для себя,так что буду рад любой помощи.
  • 0
Нет границ, а есть лишь препятствия© David Belle

#2 PyPL

PyPL
  • Пользователь
  • 54 сообщений

Отправлено 07 ноября 2010 - 11:11

Ну вот самый наколеночный пример того как можно это сделать в .NET (я делал, пока пил кофе :rolleyes:) :

using System;
using System.Diagnostics;
using System.Threading;

namespace ProcessMonitor
{
    class Program
    {
        //имя процесса, которое нужно искать при проверке
        static string processname = "firefox";
        //путь до файла который нужно запустить
        static string filepath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
        //аргументы которые нужно передать
        static string arguments = "-url http://www.google.com/";
        //время которое нужно ждать перед следующей проверкой, в миллисекундах
        static int sleeptime = 2000;

        static bool DoRun = true;

        static void CheckAlive()
        {
            while (DoRun)
            {
                //Ожидаем указанное кол-во миллисекунд
                Thread.Sleep(sleeptime);

                //найдено или нет
                bool found = false;

                //получаем список процессов
                Process[] proc = Process.GetProcesses();

                //пробегаемся и ищем наш процесс
                foreach (Process p in proc)
                {
                    if (p.ProcessName.Equals(processname))
                    {
                        //указываем что нашли
                        found = true;
                    }
                }

                //а если не нашли
                if (!found)
                {
                    //запускаем его
                    Process.Start(filepath, arguments);
                }
            }
        }

        static void Main(string[] args)
        {
            //создаем отдельный поток, чтобы главная консоль не висела
            Thread worker = new Thread(CheckAlive);

            //запускаем его
            worker.Start();

            //Ждём нажатия кнопки для выхода
            Console.ReadKey(true);

            //выключаем
            DoRun = false;
        }
    }
}

Чтобы запустить, нужно скомпилировать. Для этого скачай Microsoft Visual C# 2010 Express
Создай там новый проект (Console Application), в файле Program.cs удали весь код и вставь этот, не забудь поменять в коде данные на свои (путь до программы, имя процесса, аргументы, время проверки). Потом нажми Ctrl + Shift + B или F6 чтобы скомпилировать проект.
Запускать можешь как из Visual Studio с помощью Ctrl + F5, ну или из папки где .exe эта лежит.

Ну и самом собой на компьютере должен быть установлен .NET Framework
  • 3

#3 Isamashii Tora

Isamashii Tora

    Странствующий

  • Постоялец
  • 1 840 сообщений
  • Откуда:Asylum

Отправлено 07 ноября 2010 - 14:03

PyPL, красивый код, с комментариями - мне нравится.
  • 0
"Миры рождаются и умирают, память о людях с которыми их прошел - остается" © Тристар