Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/23: Рейтинг темы: голосов - 23, средняя оценка - 4.65
3 / 3 / 0
Регистрация: 02.05.2010
Сообщений: 6
1

Проверка, запущена ли программа (служба) + чтение памяти процесса

10.05.2010, 19:36. Показов 4533. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Спасибо всем кто, смотрели мою предыдущую тему. (спасибо нажал в ответ)

первая часть темы

Есть служба (назовем ее serv), и она время от времени падает с ошибкой (когда заходишь через терминал, получаешь окно ошибки при входе)
Для автоматического перезапуска serv, разрабатываю вторую службу (назовем ее serv_restarter).

Так вот, программа serv_restarter должна наблюдать за активностью, нахождением в списке процессов программы serv через определенное время, (для этого есть const int Time_Check = 300) и при отсутствии serv, запускать службу serv.

Вопросы:
1) как получить список активных процессов?
2) как управлять службами (в данном случае, запустить serv)


вопрос по второй части темы:

Имея список процессов, как прочитать определенный адрес памяти этого процесса?
Или всетаки я изначально не прав в том, что можно читать только адреса памяти, а не память процесса?

Поясню на примере.

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

Для их просмотра можно непосредственно подключаться к процессу serv через телнет, но я желаю читать напрямую через стороннюю программу, которая будет напрямую обращаться к памяти serv.exe

Есть конечно вариант эмулировать соединение, на php такое делал.

Вопрос
3) как прочитать память запущенной программы.



Зараннее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2010, 19:36
Ответы с готовыми решениями:

Проверка и чтение памяти процесса
Здравствуйте. Необходима помощь в решении одной проблемы. Имеется опр. игра. Для неё написан...

Проверка запущена ли служба
Всем доброго времени суток, пришел к вам за помощью :friends: Возникла необходимость написать...

Проверка, запущена служба или нет
Здравствуйте, у меня такая проблема: Моя программа должна проверить запущена служба или нет, зная...

Запуск скрипта в определенное время и проверка, запущена ли служба
Ребят, может у кого есть шаблон батника. Что конкретно нужно: 1. Запуск скрипта в определенное...

3
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
10.05.2010, 20:56 2
Список процессов я вот так получал
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
System.Diagnostics.Process[] AllPROCESSES;
 
private void Run_List_Processes()
        {
            AllPROCESSES = System.Diagnostics.Process.GetProcesses();
            h.Clear();
            combo.Items.Clear();
            foreach (System.Diagnostics.Process x in AllPROCESSES)
            {
 
                string s2 = String.Format("{0,-30} {1}", x.ProcessName, x.WorkingSet64 / 1024+" kb");
                h[x.ProcessName] = s2;
                combo.Items.Add(s2);
 
            }
ну а прогу свою запустишь как-нибудь так например:
Process.Start("notepad++.exe");

есть там в System.Diagnostics кстати и каллбеки на событие завершения процесса.
1
3 / 3 / 0
Регистрация: 02.05.2010
Сообщений: 6
12.05.2010, 10:48  [ТС] 3
А по второму пункту кто-нить может объяснить или подсказать в каком направлении стоит копать?

Имея список процессов, как прочитать определенный адрес памяти этого процесса?
Или всетаки я изначально не прав в том, что можно читать только адреса памяти, а не память процесса?

Поясню на примере.

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

Для их просмотра можно непосредственно подключаться к процессу serv через телнет, но я желаю читать напрямую через стороннюю программу, которая будет напрямую обращаться к памяти serv.exe

Есть конечно вариант эмулировать соединение, на php такое делал.

Вопрос
3) как прочитать память запущенной программы.



Зараннее спасибо.
0
8 / 8 / 2
Регистрация: 27.04.2010
Сообщений: 11
12.05.2010, 14:39 4
думаю ты изначально ошибся в выборе языка программирования
C# не предназначен для работы с памятью напрямую.
посмотри в MSDN -> memory management functions, они предназначены для C++ но можно унаследовать код.
1
12.05.2010, 14:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2010, 14:39
Помогаю со студенческими работами здесь

Чтение памяти другого процесса по таймеру: нужно ли закрывать хэндл процесса?
В моём варианте работает так: По таймеру (0,1 сек) определяю ID процесса по ехе-шнику, получаю...

Проверка запущена ли другая программа
Нужно написать две проги:первая пустая,вторая сканит на наличие запущеной первой и если таковая...

Проверка, запущена ли программа со съемного носителя
Здравствуйте как реализовать проверку запущена ли программа со съемного носителя или нет ? У меня...

Проверка, с какими правами запущена программа
Возможно ли делать проверку от чего запущена программа если от администратора то все нормально а...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru