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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2011, 19:32   #1
sashaxD
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 48
По умолчанию Хэндл запущенного процесса

Как получить хэндл обычного запущенного процесса на компе, если его имя меняется?
sashaxD вне форума Ответить с цитированием
Старый 10.09.2011, 19:40   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

процесс запущен вами?
иначе вообще вам надо к чему то привязыватся, быдь то окно процесса или его имя.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.09.2011, 19:57   #3
sashaxD
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
процесс запущен вами?
иначе вообще вам надо к чему то привязыватся, быдь то окно процесса или его имя.
Да, процесс запущен мной, но имя окна меняется.
Известно только имя процесса в таскменеджере.
sashaxD вне форума Ответить с цитированием
Старый 10.09.2011, 20:00   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если запущен вами то все просто.
при старте процесса через CreateProcess, вы получите как его PID, так и хендл к нему.(и так же аналогичное к первичному потоку процесса)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.09.2011, 21:18   #5
sashaxD
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
если запущен вами то все просто.
при старте процесса через CreateProcess, вы получите как его PID, так и хендл к нему.(и так же аналогичное к первичному потоку процесса)
А если процесс запускается не програмно?
sashaxD вне форума Ответить с цитированием
Старый 10.09.2011, 21:22   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а как иначе то?
аппаратно чтоль?))

вопрос кем он запускается, вы сказали что вами, значит все просто.
Цитата:
Известно только имя процесса в таскменеджере.
дык если вам известно имя процесса то в чем проблема?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.09.2011, 22:20   #7
sashaxD
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 48
По умолчанию

Типо того?


Код:
function processExists(exeFileName: string): Boolean;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin

  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32); 
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); 
  Result := False; 
  while Integer(ContinueLoop) <> 0 do 
  begin 
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = 
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = 
      UpperCase(ExeFileName))) then
    begin 
      Result := True;
    end;
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

Последний раз редактировалось rpy3uH; 12.09.2011 в 13:53.
sashaxD вне форума Ответить с цитированием
Старый 10.09.2011, 22:25   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

эта функция только проверяет, на предмет, запущен ли процесс.
хотя изменить её чтоб она вернула PID процесса не трудно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.09.2011, 23:16   #9
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

http://programmersforum.ru/showthread.php?t=159407
fate вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отслеживание пакетов процесса запущенного из моей программы Crystallon Общие вопросы Delphi 2 20.01.2011 23:51
хэндл окна по PID процесса? Johnson Win Api 1 16.12.2010 16:05
Рисование на форме, используя её хэндл ImmortalAlexSan Общие вопросы Delphi 3 04.10.2010 02:36
Работа с памятью запущенного процесса DeniCPP Общие вопросы C/C++ 2 09.04.2009 12:38
хэндл файла sd13 Win Api 6 25.05.2008 23:42