2009-05-10 28 views
5

Tôi có một ứng dụng C++ Windows myapp.exe tải một số trình cắm thêm.Làm thế nào để có được tên tập tin của một DLL?

Plugin cần tìm đường dẫn đến tệp DLL của chúng. Tôi có thể sử dụng GetModuleFileName cho điều này, nhưng nó cần xử lý cho các plug-in DLL. Tôi không biết phải nắm lấy tay cầm ở đâu. GetModuleHandle (NULL) trả về xử lý cho tệp thực thi.

Một tùy chọn là sử dụng GetModuleHandle (GetModuleHandle ("myplugin.dll")), nhưng điều này yêu cầu tên của plugin phải được mã hóa cứng mà tôi muốn tránh.

Mọi trợ giúp đều được đánh giá cao.

Paul

Trả lời

10

Tôi không biết nơi nào để có được điều này xử lý

Nó trôi qua như một tham số để hàm số entry DllMain() của bạn.

Nếu plugin không thể truy cập chức năng nhập DLLMain(), nó có thể sử dụng chức năng VirtualQuery trên một bộ nhớ riêng và sử dụng trường AllocationBase của cấu trúc MEMORY_BASIC_INFORMATION đã điền làm HMODULE của nó.

+3

Hoàn hảo cảm ơn bạn Chris. Đây là chức năng tôi sử dụng: HINSTANCE GetMyModuleHandle() { MEMORY_BASIC_INFORMATION mbi; VirtualQuery (GetMyModuleHandle, & mbi, sizeof (mbi)); return (HINSTANCE) (mbi.AllocationBase); } –

Các vấn đề liên quan