PureDLLHelper
На сайте
http://www.realsource.de/ есть интересный инструмент, который помогает работать с любыми DLL.
Есть две версии для
х64 и
х86 систем соответственно PureDLLHelper_x64.exe и PureDLLHelper_x86.exe.
Утилита проста в эксплуатации. Загружаем подопытную
DLL ку и сразу мгновенно видим все функции и кол-во параметров, с которыми эти функции можно вызывать.
Чудес конечно эта утилита не творит - какие это параметры и их типы она конечно не подскажет, но есть бонус! Она генерирует код на
Пурике, который помогает работать с этой
DLL при помощи прототипов. В общем, практически всё делает за вас.
На примере известной
DLL user32.dll
Загружаем в утилиту, она сразу находит 732 функции. Ну мы с генерируем всем известные и любимые
MessageBoxA и
MessageBoxW
Отмечаем их галочкой( предварительно убрав все лишние галочки при помощи самой верхней кнопки) и переходим на следующую вкладку
Preview и получаем готовый код:
;==========================================================================
; Generated with PureDLLHelper, Copyright ©2011 by Thomas Schulz
;==========================================================================
Prototype MessageBoxA(a, b, c, d)
Prototype MessageBoxW(a, b, c, d)
Global MessageBoxA.MessageBoxA
Global MessageBoxW.MessageBoxW
Procedure.i user32_LoadDLL()
Protected hDLL.i
hDLL = OpenLibrary(#PB_Any, "user32.dll")
If hDLL <> 0
MessageBoxA = GetFunction(hDLL, "MessageBoxA")
MessageBoxW = GetFunction(hDLL, "MessageBoxW")
ProcedureReturn hDLL
EndIf
ProcedureReturn #False
EndProcedure
Собственно, всё что нам осталось, это расставить нужные типы переменных и вызвать нужную функцию:
Prototype MessageBoxA(a, b.s, c.s, d)
Prototype MessageBoxW(a, b.s, c.s, d)
;.....
If user32_LoadDLL()
MessageBoxA(0,"Vasja!","Hello",0)
EndIf
На третьей вкладке можно посмотреть все ресурсы этой библиотеки. Программа так же работает и с обычными exe файлами ( в плане ресурсов естественно).
P.S. кто будет повторять код в режиме поддержки стиля XP, не забудте добавить вызов InitCommonControls_()
Скачать архив
Материал взят с темы:
Prototype (Прототипы)
Автор:
kvitaliy