![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сменить имя процесса?
Volkov © (2003-12-30 00:47:00)Чужого. Возможно ли это? И как реализовать?
DVM (2004-01-24 23:48:00) [1]
> Командная строка у них, разумеется, разная, там имя файла
> правильное получается. Объяснение этому факту дать сразу
> не могу :)
Может дело в кэшировании? Запускается на выполнение по сути один и тот же исполняемый файл, хоть его и переименовали, на диске он находится в том же самом месте и вместо считывания с диска берется из кэша. Я могу конечно ошибаться, но очень похоже на то.
SammIk (2004-01-24 16:54:00) [2]Вот ребяты смотрю сюда и ни*ра не понимаю.
У меня ничего подобного не наблюдается.
Беру фаил AAA.exe запускаю, смотрю в TMen. там AAA.exe
Переименовываю в BBB.exe, смотрю, опа, а там BBB.exe?!)
Проверял первое не выгружая Таск мен, и выгружая перед переименованием.
И хде вы такое увидили?
ЗА win2k sp2
Германн (2004-01-06 04:42:00) [3]Это я так. Просто интересно. А если от NT перейти к 9x? Что будет?
Игорь Шевченко (2004-01-05 17:11:00) [4]К диспетчеру задач это поведение не относится (с переименованным файлом). Имя процесса выдается функцией NtQuerySystemInformation, Process Explorer и аналогичный, написанный за час диспетчер задач (лежит в кладовке) показывает то имя процесса, который был запущен первый раз до переименования. Командная строка у них, разумеется, разная, там имя файла правильное получается. Объяснение этому факту дать сразу не могу :)
@ndrey (2004-01-05 16:38:00) [5]Дать прогу?
Digitman (2003-12-31 10:04:00) [6]
> Volkov
потому что Диспетчер выполняет по таймеру обычные снэпшоты и не задействует никакие иные системные механизмы, которые позволили бы отслеживать старты и завершения всех процессов асинхронно.
такой же Диспетчер вполне можно слепить самому за час
Volkov (2003-12-30 19:57:00) [7]почему ничего удивительного?!
Digitman (2003-12-30 18:12:00) [8]
> Вот такая еще обна странная особенность диспетчера задач
и ничего удивительного в этом нет
Volkov (2003-12-30 18:08:00) [9]объясните, пожалуйста, как, где, с какого момента. по какому поводу и зачем оно фигурирует вообще ... и как это связано с тем что я вижу в пресловутом TaskManager ?!!
Volkov (2003-12-30 18:05:00) [10]Win2k+SP4 - я проверял, все верно. Эксперименты подтверждают
Volkov (2003-12-30 18:02:00) [11]Digitman, понял наконец такое странное поведение Диспетчера задач.
Оказывается, он запоминает в текущем сеансе имена процессов.
Например, есть файл AAA.exe
Ты его запускаешь, процесс показывается как AAA.exe - все верно. Но с этой поры как бы ты не переименовывал EXE'шник (после того как завершишь процесс, конечно), все равно при запуске процесс будет отображаться как AAA.exe
Например, ты можешь его переименовать в BBB.exe - все равно при запуске процесс будет AAA.exe.
Если же ты файл не запускал до этого, то переименуешь его в BBB.exe - и процесс после запуска будет называться BBB.exe. После работы ты уже этот BBB.exe можешь переименовывать как угодно. Теперь процесс этого EXE'шника все равно будет называться BBB.exe до перезапуска винды.
Вот такая еще обна странная особенность диспетчера задач.
Digitman (2003-12-30 18:01:00) [12]
> Volkov (30.12.03 17:46) [20]
хорошо.
в это, конечно, я не верю , но - ты в состоянии привести текст того самого проекта, который якобы выкидывает подобные "чудеса" под "лупой" станд. Диспетчера задач ? Что он делает хотя бы ? По логике ?
YuRock (2003-12-30 18:00:00) [13]> YuRock, не учи, пожалуйста. Я и так список процессов смотрю...
Ну ладно, все, извините...
Volkov (2003-12-30 17:46:00) [14]Digitman © (30.12.03 16:53) [18]
до этого я тебя вроде как понимаю. Теперь перестаю, с чего ты вдруг заговорил про имя гл.окна приложения ?
Перечитай, что я пишу. Особенно пост Volkov (30.12.03 16:51) [17]
Есть допустим пустое приложение Project1.exe
Я переименовываю файл в DDD.exe
Я же сам EXE'шинк переименовываю (естесственно, когда приложение не запущено)!!! А в диспетчере задач оно все равно по прежнему отображается. Я даже HEX редактором... в общем, читай тот пост
YuRock, не учи, пожалуйста. Я и так список процессов смотрю...
YuRock (2003-12-30 16:59:00) [15]Для того, чтобы увидеть список процессов (а не список задач), нажми [Ctrl+Shift+Escape] (если у тебя NT или 2K или XP или 03), а если нет - зайди в фар, нажми F11, выбери "Список процессов"
Digitman (2003-12-30 16:53:00) [16]
> Volkov
имя процесса и имя гл.окна приложения - совершенно разные вещи и сущности
Volkov (2003-12-30 16:51:00) [17]Digitman, обнаружил еще более странную вещь.
Есть допустим пустое приложение Project1.exe
Я переименовываю файл в DDD.exe
Так вот, сторонняя программа Starter действительно начинает отображать процесс как DDD.exe. Но диспетчер задач по прежнему пишет Project1.exe!!! Откуда он узнает тогда?
Я пошел дальше. Залез HEX редактором в EXE'шник, нашел там единственную строку project1.exe. Переправил ее на что-то типа fbjkbct1.exe. Все равно диспетчер задач показывает Project1.exe
Мистика какая-то...
Теперь понятно - меня просто Диспетчер задач ввел в заблуждение... но как он узнает имя?
YuRock (2003-12-30 16:47:00) [18]Т.е., если хочешь изменить имя задачи, то найди handle главного окна, а затем напиши SetWindowText(hWnd, '...')
YuRock (2003-12-30 16:45:00) [19]> Например, как не обзови EXE'шник FlashGet'а - процесс все равно будет называться flashget
Application.Title и Application.ExeName (название задачи и имя процесса) - разные вещи.
Если тебе надо изменить название задачи - это очень просто. Для этого (скорее всего) будет достаточно заменить заголовок главного окна процесса (не всегда, как всегда - ч-з API не знаю, для своего процесса в VCL это Application.Title := '...').
Если же ты хочешь менять именно имя процесса (причем динамически), то не знаю, возможно ли это...
Volkov (2003-12-30 16:44:00) [20]>не факт. начнем с того
хм. Это ведь простой эксперимент, который я проделал два раза. Что значит не факт? И про FlashGet, что он в диспетчере задач всегда называется FlashGet независимо от названия EXE файла - тоже факт. Против эксперимента же не попрешь...
имя прикладного процесса всегда совпадает с именем exe-файла, на основании существования которого система инициализирует и стартует процесс
Почему мои эксперименты этого не потверждают?