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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2010, 12:20   #1
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
Печаль Проблема с получением имени

Вообщем имеется проблема с получением полного имени процесса. Вот код:
Код:
procedure DeleteProcess(i: integer);
var
 cm: cardinal;
 ModName: array[0..max_path] of char;
 mh: hmodule;
 ph: THandle;
begin
 ph:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, proclist[i]);
 EnumProcessModules(ph, @mh, 4, cm);
 GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName));
 ShowMessage(string(ModName));
 DeleteFileWithUndo(string(ModName));
 CloseHandle(ph);
end;
Небольшое пояснение:
Процедура получает атрибут 'i', это указатель на элемент массива с записью о ID процесса(proclist). DeleteFileWithUndo это полностью рабочая самописная функция удаления файлов.

Проблема состоит в том что я никак не могу получить полное имя процесса в переменную ModName после исполнения процедуры она остаётся пустой...

Помогите...
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 14.05.2010, 12:49   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Я проверил Вашу процедуру. У меня всё работает. Возможно Вы не верно указываете ID процесса.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 14.05.2010, 12:58   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

во первых используйте SetLastError(0) перед каждым действием(перед любым АПИ) и соответственно GetLastError после(если вернет не 0 то ошибка была)
и далее, функции возвращают значение по которому можно судить об ошибке.
и отладчик на что?
используйте ShowMessage на крайняк.

это я про отладку конечно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.05.2010, 13:06   #4
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Всем спасибо, я разобрался. Я пытался использовать OpenProcess уже после того как убил процесс. Осознанние этого пришло не сразу)

PS
Цитата:
используйте ShowMessage на крайняк.
Так а я чем проверяю =)
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема получением сообщения WM_COPYDATA kleop Win Api 0 12.03.2010 21:58
Проблема с получением текста в tclientsocket zver777 Работа с сетью в Delphi 1 24.09.2009 22:50
Проблемы с получением страницы Kottik Работа с сетью в Delphi 15 18.09.2009 00:24
WinSock Проблеммы с получением AngelOfDeath Работа с сетью в Delphi 2 19.01.2009 02:30
Проблема с получением хэндла модуля Боевой Пингвин Общие вопросы C/C++ 3 09.11.2008 17:06