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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2013, 22:18   #1
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
По умолчанию Закрыть программу из DLL и выгрузить DLL

Доброго времени суток читающим!
Ситуация такая: нужно закрыть программу из DLL и эту самую DLL из нее выгрузить вместе с этим, к коду закрываемой программы я доступа не имею т.ч. делать все нужно из DLL.

Я не нашел ни одного способа закрыть прогу из дллки без непосредственного убийства процесса, а при таком способе DLL_PROCESS_DETACH разумеется не вызывается, и DLLка остается висеть в воздухе, что приводит к тому что при следующем запуске программы ее код стоящий на DLL_PROCESS_ATTACH не выполняется.

На сколько мне известно выгрузить DLL можно с помощью FreeLibrary, но я не нашел информации как получить хендл дллки. Но даже еслиб я получил, разьве FreeLibrary выполнился бы если бы стоял после ExitProcess(GetCurrentProcessId)? А до убийства процесса я FreeLibrary поставить не могу, по той простой причине что код после FreeLibrary точно не выполнится и сооветственно процесс не убьется.

Вобщем я в тупике, прошу местных гуру помощи.
Заранее спасибо!
Crystallon вне форума Ответить с цитированием
Старый 26.02.2013, 22:34   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Всем окнам ПО посылаете сигнал к выходу из ПО(нажатие на [X]). И все.
Человек_Борща вне форума Ответить с цитированием
Старый 27.02.2013, 15:15   #3
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
По умолчанию

Увы но что-то не сработало...
Пробовал так:
CloseHandle(GetModuleHandle(nil));
так:
SendMessage(GetModuleHandle(nil),WM _DESTROY,0,0);
и так:
SendMessage(GetModuleHandle(nil),WM _CLOSE,0,0);

GetModuleHandle(nil) вызвается соответственно из тойже DLL и исправно выдает хендл.
Программа никак не реагирует на вышеописанные действия.
Crystallon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# & DLL: как указать, что загружать DLL нужно из ЗАДАННОЙ папки "D:\My\Path\a.dll" ? AntyDES C# (си шарп) 11 10.10.2012 20:00
Закрыть программу из DLL Shouldercannon Общие вопросы Delphi 2 17.05.2011 17:49
как правильно выгрузить dll из памяти пауэрлифтинг Общие вопросы Delphi 11 05.04.2010 00:46
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
Программно выгрузить DLL из памяти Air Помощь студентам 7 01.05.2008 00:06