|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.08.2022, 09:15 | #1 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Скрытый запуск консольных приложений с определением PID
Доброго дня!
Не знаю, по адресу или нет, если что проше перенаправить. Имеем консольную программу получения sms с модема и складирования их в файлы. Нужно, запустить программу в скрытом режиме, без создания окна. Сложности: 1. Нужно определить PID запущенной программы, для дальнейшего управления окном. 2. Может быть запущено несколько физических копий этой программы. Отличающиеся местами расположения на диске. 3. Перед стартом нужно проверить нет ли уже запущенных программ. Например, после возникновения ошибок. Изначально хотел отслеживать программы путем задания "кода" в заголовке окна. Но при скрытом запуске окно не формируется, соответственно у него нет заголовка. Буду рад советам как решить задачу.
С уважением, Алексей.
|
12.08.2022, 11:53 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
E-Mail: arigato.freelance@gmail.com
|
12.08.2022, 12:11 | #3 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Имелось в виду управление запущенным приложением. PID присваивается не окну. В данный момент нужны операции: определить запущено ли нужно приложение или нет, запустить приложение, убить приложение.
Рад что вы внимательно читаете, жаль что у вас нет информации по теме.
С уважением, Алексей.
Последний раз редактировалось tae1980; 12.08.2022 в 12:14. |
12.08.2022, 13:15 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
|
12.08.2022, 13:40 | #5 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Цитата:
Нужно решение для командной строки, аналог "tasklist". ЗЫ: В инете в статьях по озвученными вами направлениям можно найти слова "возвращающую PID по названию процесса". К сожалению, у меня нет возможности запустить код и посмотреть возврат, но "название процесса" есть и в tasklist, и это просто название запускаемого файла. А таких заголовков однозначно будет более одного. В идеале для однозначного нахождения процесса, было бы правильно установить при запуске некий tag, и уже анализировать его. Или увидеть путь к запускаемому файлу. Вроде есть поле "Caption", в котором выводится как заголовок окна, так и некая информация поясняющая что это за процесс. Но вот как занести информацию сюда, так и не понял.
С уважением, Алексей.
|
|
12.08.2022, 14:53 | #6 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Код:
|
12.08.2022, 15:11 | #7 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Цитата:
По коду. А что будет если у меня будет запущено 2, 3, 10 "svchost.exe"? Какой PID он мне вернёт? При этом "svchost.exe" расположены "c:\1\svchost.exe", "c:\2\svchost.exe", "c:\N\svchost.exe" "и заголовком окна, который будет получен через "%%K"" При запуске "start /B", окно не формируется, и вместо заголовка окна у процесса выводится "Н/Д".
С уважением, Алексей.
Последний раз редактировалось tae1980; 12.08.2022 в 15:14. |
|
12.08.2022, 15:58 | #8 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Он вам все перечислит svchost.exe для которых будут получены и PID и Имя окна. Но вы не пишите про то по какому критерию вы отфильтруете процессы. Поэтому вместо строк rem вы можете расположить код для фильтрации процессов и выполнения определенных действий с найденным процессом. Например:
Код:
|
12.08.2022, 17:12 | #9 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Цитата:
Он мне выдаст 10 строк которые подходят под имя процесса, а в названии окна у всех "Н/Д". И как из этих 10 выбрать нужный? А если нужно найти два процесса? В это и есть загвоздка. Я уже пробовал запускать exe'ник не напрямую, а через программу которая узнаёт свои PID и возвращает вызывающей. Но при все попытки сохранить полученный PID при вызове нужной программы провалились (у неё всегда новый PID). Как вариант, можно убить процесс по полученному PID'у и все дочерние процессы. НО! Такой подход не позволит найти РАННЕЕ запущенные процессы. Пока отказался от убирания окон в фон, приходится мирится с двумя чёрными окнами (запускаются два процесса). И определять их наличие по кодовой фразе в заголовке окна. Млять, 21 век называется.
С уважением, Алексей.
Последний раз редактировалось tae1980; 12.08.2022 в 17:17. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удобная среда для разработки консольных приложений на языке Pascal | Krasiosoft | Паскаль, Turbo Pascal, PascalABC.NET | 36 | 19.07.2015 16:25 |
Переход с консольных приложений на объектные. | Руслан555 | Visual C++ | 3 | 06.06.2012 15:02 |
Как отойти от консольных приложений? | jallvar | Свободное общение | 11 | 01.11.2010 16:22 |
CreateProcess. Существуют тонкости в запуске консольных приложений? | st01en | Win Api | 10 | 12.05.2009 11:50 |