Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 00:48   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Вопрос Открыть процесс , присоеденить к нему поток и получить о сведенья о процессе

Всем привет!

Такой вопрос:
Допустим есть PID процесса,по по этому PID присоеденить от своей программы поток(TTHread) к этому процессу, и получить из процесса информацию:
Плный путь до исполняемого файла.
Параметры запуска процесса(Если они есть).
Приоритет процесса.
Рабочая папка процесса.

Под "примоеденить свой поток" имеется ввтду, не запускать туже программу через CreateProcess а в поток передать данные о уже существующем процессек, далее поток будет ждать завершния работы программы к которой прикреплён(При этом основная программа должна работать(та которая прикрепила поток)).
Человек_Борща вне форума Ответить с цитированием
Старый 04.01.2011, 01:48   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я немного не понял что значит присоединить?
инжект кода?

или просто надо потоку передать PID?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.01.2011, 12:09   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

да именно передать PID, с этим у меня проблем нет, запускаю поток , передаю ему PID, а как по PID открыть процесс и получить сведенья о нём:
Имя и путь exe файла.
Рабочая папка.
Строка запуска.
Приоритет процесса.
Человек_Борща вне форума Ответить с цитированием
Старый 05.01.2011, 11:21   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

эмм поможет кто?
Человек_Борща вне форума Ответить с цитированием
Старый 05.01.2011, 21:43   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Зачем поток? OpenProcess с флагом PROCESS_QUERY_INFORMATION и спрашивай чего там нужно GetPriorityClass, GetModuleFileName...
пыщь
JTG вне форума Ответить с цитированием
Старый 05.01.2011, 23:48   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Можно по подробнее, хотябы небольшой пример..

_Копнул поиск..._

вот что получилось:
Код:
resourcestring
  rcProcPriority='Приоритет процесса: %s';

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ProcHandle:THandle;
begin
  ProcHandle:=OpenProcess(PROCESS_QUERY_INFORMATION,False,GetCurrentProcessId);
  Label1.Caption:=Format(rcProcPriority,[IntToStr(GetPriorityClass(ProcHandle))]); //Почему возвращает 32?
  CloseHandle(ProcHandle);
  end;
Получил приоритет своего процесса. Но всеравно немного непонятно.

Путь исполяемого файла вроде так:
Код:
Const
  BuffSize=255;
var
  ProcHandle:THandle;
  Buffchar:Pchar;
s:string;
begin
  ProcHandle:=OpenProcess(PROCESS_QUERY_INFORMATION,False,GetCurrentProcessId);
 GetMem(CharBuff,BuffSize);
  GetModuleFileName(ProcHandle,CharBuff,BuffSize); //may be SizeOf ? 
  s:=String(CharBuff);
   FreeMem(CharBuff);
  CloseHandle(ProcHandle);
  end;
Возможно чуть не правельно, если несложно поправьте где я ошибся.


А вот как правельно пучить строку запуска. Ну допустим программа запущена с параметрами:
Код:
smthExeFile.exe /a /b /v
как получить эти:
Код:
/a /b /v
Не забываем что тема о том, как получать всё это из чужого процесса.

Последний раз редактировалось Человек_Борща; 06.01.2011 в 00:13.
Человек_Борща вне форума Ответить с цитированием
Старый 06.01.2011, 19:48   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ответ нашёл
сдесь
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список с заглавным звеном, из текстового файла получить список из записей и по нему уже сделать задание Zigfried Помощь студентам 2 04.10.2010 20:29
Как присоеденить правельно к проекту сторонний .pas фаил kakawkin Общие вопросы Delphi 2 19.08.2010 21:34
файловый поток. Открыть\создать бинарник Darth.Vader Общие вопросы C/C++ 16 29.12.2009 22:04
Найти процесс, получить handle, послать сообщение. Altera Win Api 2 05.01.2009 00:07
Как отсечь имя файла и получить путь только к нему? Dux Общие вопросы Delphi 8 25.05.2008 20:24