Автор
|
Тема: DLL
|
server_mouse |
опубликован 07-07-2001 12:22 MSK
Всем доброго времени суток!Ситуация: Хочу загружать при загрузке машины свою DLL которая будет юзать socket-ы, ставить\снимать\обрабатывать хуки и т.д. Вопрос: А возможно ли такое? Можно ли сделать это с помощью MFCAppWisard? Пробовал прописать MessageBox в InitInstance(). Ничего не выводит... Далее, если DLL уже загружена, а моя прога(exe) хочет поюзать её ф-ции, что получится при LoadLibrary(), новая копия, или указатель к уже загруженой?
|
talex
|
опубликован 10-07-2001 11:41 MSK
po moemu, указатель к уже загруженой |
Sancho
|
опубликован 16-07-2001 19:14 MSK
Если в твоей проге происходит отлов ранее запущенных сеунсов ее самой, то несомненно вернется указатель на уже загруженную библиотеку (т. к. запуска второй проги не произойдет, в рамках одного процесса вызовы LoadLibrary(...), кроме первого, вернут указатель на уже загруженную библиотеку). Примерно так было написано в одной хелпе. А на счет автозапуска... Тупой вариант - rundll32, your_library и т. п. Или я чего-то не понял. :( |
server_mouse
|
опубликован 17-07-2001 22:32 MSK
Сенкс за ответы.Попутно возник др. вопрос: Можно ли через DLL заставить общаться две абсолютно независимые проги? Может кто подскажет более правильный подход для взаимодействия двух процессов? Только не COM|OLE и иже с ними. Из пушки не стоит по воробьям... |
necer
|
опубликован 18-07-2001 10:25 MSK
Через DLL общаться между процессами нельзя! Каждый процесс загружает свою копию DLL в свое адресное пространство. А для передачи данных между процессами лично я использую TCP сокеты. Это позволяет передавать данные даже между процессами, запущенными на разных машинах. Возможно, есть лучший вариант. |
DenizK
|
опубликован 19-07-2001 12:06 MSK
ню-ню - Со всей ответственностью говорю - через DLL размым процессам общаться можно, если сделать сегмент данных, который share#pragma data_seg("Shared") volatile DWORD g_dwChar = 0; volatile HWND g_hwndMain = NULL #pragma data_seg() #pragma comment linker, "/Section:Shared,RWS") тока переменные должны ОБЯЗАТЕЛЬНО инициироваться - а то ничего неполучится ну а кроме сокетов (которые, конечно, рулез, но не в произвольном случае) мона для передачи заюзать MSMQ, ActiveX, RPC, pipes, DDE и WM_COPY_DATA |
DenizK
|
опубликован 19-07-2001 12:09 MSK
Да, ещё забыл отображаемые в память файлы - это уж куда удобней чем сокеты если процессы запущены на одной машине. |
necer
|
опубликован 19-07-2001 12:42 MSK
Кстати, интересный вариант c shared сегментом. Надо будет попробовать, спасибо за полезную информацию. А вот насчет остального... вопрос же был поставлен таким образом, чтобы не использовать COM/OLE и иже с ними. |
DenizK
|
опубликован 19-07-2001 22:25 MSK
Согласен - невнимательно чмтал сообщение |