Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отслеживать запущенные процессы в Windows, управление процессами 
:(
    Опции темы
igor_cartman
Дата 22.11.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



   Доброе время суток ) Помогите разобраться вот в чем: мне надо сделать такой Java апликейшн, который полсе запуска будет отслеживать какие процессы запускаются: выводить в свое главное окно название процесса, если есть окно, то надо чтобы выводило Caption окна процесса, и состояние его при запуске и после закрытия. Например, если я запускаю notepad, то оно должна сразу же о нем это все вывести. Если это все не возможно узнать о процессе, то хотябы как можна часть из того все узнать ? 

Это сообщение отредактировал(а) igor_cartman - 22.11.2007, 20:00
PM MAIL   Вверх
AntonSaburov
Дата 22.11.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Это работа с WinAPI - скорее всего придется через JNI - пример использования - Что такое JNI - простейший пример.
PM MAIL WWW ICQ   Вверх
igor_cartman
Дата 22.11.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



Это получается что я буду писать почит всю логику, ну тоесть поиск процессов, поиск капшенов окон и все остальное с помощью Вин32 функций, а в Ява апликейшн буду передавать только Стринги, которые описывают все это. Тогда проще написать это сразу же на Вин32, без Яви... Но все же, может существует другой способ, без использования визова Вин32 функций....
PM MAIL   Вверх
Hidrag
Дата 22.11.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 3
Всего: 25



Да можно проще, выполняем в отдельном потоке команду tasklist, затем читаем и  парсим вывод:

Код

            Process proc = Runtime.getRuntime().exec("tasklist");
            InputStream in = proc.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String s;
            while((s=br.readLine())!= null) {
                //вот здесь читаешь построчно и делаешь что нужно...
            }
            in.close();
            br.close();



--------------------
user posted image
PM WWW ICQ   Вверх
igor_cartman
Дата 22.11.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



Спасибо большое, красивое решение, вот только из того, что мне нужно, из всего потока можно взять имя процесса...
Может есть какой то другой сервис в винде, откуда можна взять побольше информации(информация указана в топе темы)
PM MAIL   Вверх
fixxer
Дата 23.11.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Можно, конечно, и зайца научить курить, можно и микроскопом гвозди забивать.
Все же мне кажется, что VC++ или Delphi здесь в самый раз, как бы я ни любил Java.


--------------------
user posted image
PM MAIL ICQ   Вверх
hamsterKSU
Дата 23.11.2007, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 1
Всего: 11



Цитата(fixxer @  22.11.2007,  23:01 Найти цитируемый пост)
Можно, конечно, и зайца научить курить, можно и микроскопом гвозди забивать.Все же мне кажется, что VC++ или Delphi здесь в самый раз, как бы я ни любил Java.


потдерживаю.

если ты хочешь кросплатформенное приложение то не получится - у тебя все равно будут зависимые части для получения свединия о процессах или еше что то.

если занимаешься системным программирование. то С++ теде в руки. ну а если что то там узнать от системы и она  виндовс то вообше C# - немного легче будет. если что то хардкорное то однозначно С/С++, ну  или Delphi - накрайняк, для некороых задачь
PM MAIL ICQ   Вверх
Hidrag
Дата 23.11.2007, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 3
Всего: 25



fixxerhamsterKSU, все так! Но не всегда это объяснишь преподователям в вузах, парадокс! Вот и приходится людям выкручиваться. У меня например не принимали работы на С++, мотивируя что нет .exe файла, хотя я русским по белому написал, что делал в Linux и для Linux... пришлось винду тогда ставить, чтобы сдать, а предмет назывался - ООП (я бы его тогда назвал С++ for Windows)...

По теме: с тогоже tasklist можно вытащить довольно много информации о процессах, если запускать его с параметрами (tasklist /v - например), в аське я об этом уже сказал топикстартеру и вроде бы там все получилось, думаю вскоре он выложит сюда решение smile


--------------------
user posted image
PM WWW ICQ   Вверх
igor_cartman
Дата 24.11.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.11.2007

Репутация: нет
Всего: нет



    Да, уже все получилось, сделал так как и предложил Hidrag. Там надо было только еще настроить поток с такслиста на нужную кодировку. Но вот вчера поговорил с преподом, так он сказал что надо еще отслеживать ту ситуацию, что процесс может иметь много потоков, которые имеют окна, например как Експлорер - процесс один, а потоков может быть много, тобиш много может быть открыто окон, и вот нужно вывести Кепшин каждого из этих окон, а это надо уже брать информацию о потоке процесса...
   Скорее всего без Вин32АПИ не обойтись ((
   Всем большое спасибо за помощь, особенно Hidrag’у !
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1038 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.