imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 08.10.2004, 18:07     # 1
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Question Delphi: список процессов

У меня есть список процессов, созданный кодом:
Код:
var
  hSnap: integer;
  proc:  PROCESSENTRY32;
...
begin
...
  hSnap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if Process32First(hSnap, proc) then repeat with proc do
      writeln (Format('%6d | %20s', [th32ProcessID, szExeFile]));
  until not Process32Next(hSnap, proc);
...
end;
Но при его выполнении отображаются только имя экзешника и идентификатор процесса, а мне нужно еще и кроме этого командная строка, которой запущен процесс, и путь к папке, из которой эта командная строка была вызвана. Например:

PID: 12345
NAME: notepad.exe
CMD: edit.bat bla-bla-bla.txt
PATH: D:\TEXTS\

Структуры PROCESSENTRY32 подобной информации не содержат. Но это как-то можно выковырять (я видел такие проги), только - как? Никто не подскажет?
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!

Последний раз редактировалось Ghost; 08.10.2004 в 18:11. Причина: чертов склероз...
Ghost вне форума  
Старый 09.10.2004, 00:08     # 2
Gem Single
Newbie
 
Аватар для Gem Single
 
Регистрация: 21.07.2004
Адрес: Брест
Сообщения: 26

Gem Single Путь к славе только начался
Для каждого из процессов нужно ещё раз вызвать CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, proc.th32ProcessID);
Первый модуль, полученный по Module32First, должен быть самим exe-шником (MODULEENTRY32.szExePath).

p.s.: не забывай закрывать хэндлы, полученные по CreateToolHelp32SnapShot...
__________________
Spel chekers, hoo neeeds em?
Gem Single вне форума  
Старый 09.10.2004, 01:05     # 3
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
Как комментарий, щоб понятней было, к сказанному Gem Single
ты делаешь слепок системы, ну или слепок памяти системы, в которой ты работаешь, так вот, как совершенно правильно заметил Gem Single
, тыж ведь в память че-то грузишь, заполняя тем самым адресное пространство всей системы. Поэтому как сделаешь слепок, незабывай удалять его ибо он также занимает память. Золотое правило программиста - занял память - освободи явно, не полагаясь на компилятор.
/7y3uK вне форума  
Старый 09.10.2004, 09:18     # 4
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Гыхм... Все равно - не то. Посмотрите на скриншот (с проги TaskInfo2003). То, что было предложено вами, дает мне третью строку - имя exe-шника с полным путем. Меня же интересуют две первые строки - с какими параметрами и из какой директории он был запущен.
Изображения
Тип файла: gif taskinfo2003.gif (2.0 Кбайт, 17 просмотров - Кто скачивал? )
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 09.10.2004, 23:30     # 5
Gem Single
Newbie
 
Аватар для Gem Single
 
Регистрация: 21.07.2004
Адрес: Брест
Сообщения: 26

Gem Single Путь к славе только начался
эхх... вторая строка -- это не из какой директории, а _текущий_ каталог (установленный функцией SetCurrentDirectory()).
Придётся тебе воспользоваться функцией CreateRemoteThread() для интересующего процесса. В созданном потоке будешь вызывать GetCommandLine() и GetCurrentDirectory(), ну и передавать полученную инфу в свой процесс при помощи file mapping.
__________________
Spel chekers, hoo neeeds em?
Gem Single вне форума  
Старый 10.10.2004, 15:06     # 6
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
ИМХО при использовании CreateProcess есть ряд структур, в которых есть то, что тебе надо... но это при создании ручками... незнаю, если в памяти эти структуры после запуска процесса не чистятся, имхо они чистятся при закрытии процесса, то их можно поиска в адресном пространстве...
BOOL CreateProcess(

LPCTSTR lpApplicationName, // pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // pointer to process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION
);
/7y3uK вне форума  
Старый 10.10.2004, 23:30     # 7
Gem Single
Newbie
 
Аватар для Gem Single
 
Регистрация: 21.07.2004
Адрес: Брест
Сообщения: 26

Gem Single Путь к славе только начался
А при чём здесь CreateProcess?
__________________
Spel chekers, hoo neeeds em?
Gem Single вне форума  
Старый 11.10.2004, 10:56     # 8
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Gem Single
Спасибо. Принцип ясен. Буду мучить.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:26.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.