Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как закрыть процесс, созданный ShellExecute()?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
В Visual C++ 6.0 был пример TaskList...

Что уже "юзаешь" Visual C++ 7? Как хранишь примеры?

Цитата:
сам процесс убития реализован сл. образом (несколько странноват)  

И в примерe нет ShellExecuteEx()...

----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 12:43 14-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83
Юзаю VC++ 2003. А пример просто остался на винте.  
 

Цитата:
И в примерe нет ShellExecuteEx()

я о другом - когда ты делаешь TerminateProcess, у тебя берутся привилегии на "убиение" как в ф-ии EnableDebugPriv() (см.выше)? Если нет, то может быть поэтому ты не можешь завершить процесс?
 
 
Добавлено
может тебе вообще уйти от HINSTANCE (ShellExecute)
 
в примере создается список всех процессов. Может убивать через список?

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 13:03 14-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
в примере создается список всех процессов. Может убивать через список?

 "Cмежники" - коллеги список всех процессов дать не могут...

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 13:43 14-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83
Ты сам его получишь - посмотри пример

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 14:14 14-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
Ты сам его получишь - посмотри пример  

В том то и дело, что даже они не могут разобраться со своими процессами...

----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 14:33 14-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83
Блин, ты хоть бы попробовал. На все ушло 15 мин.
 
SHELLEXECUTEINFO in;
 
запуск через ShellExecuteEx()
 
memset(&in,0,sizeof(SHELLEXECUTEINFO));
 
in.cbSize=sizeof(SHELLEXECUTEINFO);
in.fMask=SEE_MASK_NOCLOSEPROCESS;
in.hwnd=m_hWnd;
in.lpFile="c:\\windows\\system32\\NotePad.exe";
in.nShow=SW_SHOWNORMAL;
 
ShellExecuteEx(&in);
 
"УБИЕНИЕ"
 
HANDLE hToken;
LUID DebugValue;
TOKEN_PRIVILEGES tkp;
 
 
OpenProcessToken(in.hProcess,TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&hToken);
 
LookupPrivilegeValue((LPSTR)NULL,SE_DEBUG_NAME,&DebugValue);
 
tkp.PrivilegeCount=1;
tkp.Privileges[0].Luid=DebugValue;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
 
AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(TOKEN_PRIVILEGES),
(PTOKEN_PRIVILEGES)NULL,(PDWORD)NULL);
 
if(!TerminateProcess(in.hProcess,1)) CloseHandle(in.hProcess);
 
ВСЁ РАБОТАЕТ НА УРА
 
 

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 15:14 14-11-2003 | Исправлено: sawamail, 15:29 14-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
ВСЁ РАБОТАЕТ НА УРА  

А кто говорил что с NotePad.exe будут проблемы (даже без OpenProcessToken, LookupPrivilegeValue, AdjustTokenPrivileges) ?

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 15:39 14-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83
Хорошо. Что такого уникального ты запускаешь? Аналог или пример дай.

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 15:49 14-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
Что такого уникального ты запускаешь? Аналог или пример дай.

Аналог или пример дать не могу по причинам, о которых говорю уже второй день... (Смотри выше).

----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 16:16 14-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83
Но на чем-то ты отлаживаешься? Что это, на что похоже?

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 18:27 14-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
Но на чем-то ты отлаживаешься? Что это, на что похоже?  

Не понял... Отладку делаю в Visual C++ 6.0. Их часть - C++, Java...

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 18:36 14-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83
Нет. Ты же что-то запускаешь через ShellExecuteEx для отладки
Что это за модуль?

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 18:43 14-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
Ты же что-то запускаешь через ShellExecuteEx для отладки. Что это за модуль?

Вчера писал здесь:

Цитата:
...в "черном окне" cmd.exe "крутится" (батник "смежников" - коллег)...


----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 18:56 14-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83
Теперь все встало на свои места. Когда ты запускаешь cmd.exe создается один процесс. А если использовать cmd.exe для запуска еще чего нибудь, создается n+1 (+cmd.exe) процессов.  
 
Может поступить сл. образом: перед запуском cmd.exe сними весь список запущенных процессов. А сразу после запуска сними еще раз. Дельта - процессы для убиения. Причем cmd.exe убивай последним.
 
Хотя идея голимая - может вклиниться еще какой-нибудь стронний процесс.

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 12:30 15-11-2003 | Исправлено: sawamail, 12:36 15-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
Хотя идея голимая - может вклиниться еще какой-нибудь стронний процесс.

Вот-вот... Тем более:

Цитата:
перед запуском cmd.exe сними весь список запущенных процессов. А сразу после запуска сними еще раз. Дельта - процессы для убиения. Причем cmd.exe убивай последним.  

...список запущенных процессов "не мой", а  "смежников" - коллег...

----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 12:39 15-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83

Цитата:
...список запущенных процессов "не мой", а  "смежников" - коллег...  

какая разница твой список или нет, ведь убивать надо как раз смежников
 
сними весь список процессов в системе (см. пример TList в VC++ 6.0)

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 16:00 15-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
какая разница твой список или нет, ведь убивать надо как раз смежников

Так своих процессов и других смежников много... Перебор надо заумный...

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 16:32 15-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83
Ничего особо сложного - сравнить по ProcessID

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 17:17 15-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
Ничего особо сложного - сравнить по ProcessID

Еще раз - процессов очень много и на этой стадии - в основном, не мои...  
Да и ProcessID меняться может... Это не const... Плюс - не забывай о системных процессах...

Всего записей: 7855 | Зарегистр. 15-07-2003 | Отправлено: 18:25 15-11-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83
Ладно проехали. Если чего-нибудь надыбаю по этой теме - стукнусь.

Всего записей: 1520 | Зарегистр. 22-04-2002 | Отправлено: 20:52 15-11-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как закрыть процесс, созданный ShellExecute()?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru