Страница: 1 | 2 |
Вопрос: PID <- ShellExecute
Добавлено: 20.04.06 20:02
Автор вопроса: gvozd | Web-сайт:
Как получить PID проги, запущенной через ShellExecute?
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 20.04.06 22:15
Если процесс запущен тобой, и ты знаешь имя процесса или имя файла, то PID можно найти через snapshot.
Если имя процесса или имя файла неизвестно, то из значения, возвращаемого ShellExecute, ничего не получишь.
Номер ответа: 2
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #2
Добавлено: 21.04.06 09:26
Да, прога запущена мной, но ведь может быть N-ное количество экземпляров проги, и как узнать какой из них был запущен мной?
Номер ответа: 3
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #3
Добавлено: 21.04.06 11:34
Ну, если ты запускаешь именно прогу, то запускай через CreateProcess. Получишь PID без проблем.
Номер ответа: 4
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #4
Добавлено: 21.04.06 16:57
А если мне надо запустить ярлык или документ?
Номер ответа: 5
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #5
Добавлено: 21.04.06 17:23
Очень просто: составляешь список PID приложений, запущеных непосредственно перед запуском твоего документа. Запускаешь документ, и снова составляешь список. Сравниваешь два списка. Выводы делаешь сам.
Номер ответа: 6
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #6
Добавлено: 21.04.06 18:09
Это уже обсуждалось.
http://vbnet.ru/forum/show.aspx?id=89641
Номер ответа: 7
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #7
Добавлено: 21.04.06 18:56
Мда, не лучший способ... Придется Shell юзать или Create Process...
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 22.04.06 01:23
Всё уже рассказали, но вот вспоминается мне в диспетчере "Завершить дерево процессов" т.е. вместе с выбранным и все которые были запущены этим процессов. Я думаю стоит порыть в эту сторону, возможно и получится получить полный список PID всех тех программ которые запустила наша...
Номер ответа: 9
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #9
Добавлено: 22.04.06 09:45
Да, кстати идея неплохая.
Номер ответа: 10
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #10
Добавлено: 22.04.06 13:47
А как узнать это дерево?
Номер ответа: 11
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 22.04.06 15:09
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=38135
Предпоследний комментарий
Номер ответа: 12
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #12
Добавлено: 22.04.06 16:44
HACKER
Предпоследний комментарий сильно отличется от первого ответа?
Сделать snapshot и посмотреть кто кого запустил - дело пяти минут, а жуется уже третий день
Номер ответа: 13
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #13
Добавлено: 23.04.06 07:02
Если присмотреться - нет. Если отвечать через почту, а при этом история и хронология ответов теряется, да и не особо то просматриваю старые ответы на тему, вообщем если первый твой пост незаметить, тогда тот предпоследний комментарий очень даже кстати Да и народ тут на форуме такой, надо мало того что АПстенку, но ещё и несколько раз...
Номер ответа: 14
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #14
Добавлено: 23.04.06 10:52
Спасибо!
Номер ответа: 15
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #15
Добавлено: 24.04.06 10:15
Безусловно, но проблемы то это не решает. th32ParentProcessID и szExeFile отнюдь не однозначно описывают процесс. И выяснить, какой процесс был запущен данной командой не так просто. Можно, конечно, вести внутреннюю хронологию дочерних процессов, но не уверен что это будет корректно при запуске процесса через ShellExecute (ибо прямого запуска процесса тут нет, и кто будет парентом - твое приложение и, скажем, эксплорер - сказать можно только проверив лично).