Viktor1703
AutoIT Гуру
- Сообщения
- 1,535
- Репутация
- 413
Сегодня по надобности скачал Mail.Ru Agent и установил, решил покапаться в папке с установленной программой, и увидел vivo.dll (C++ video and voip framework - icq build 2011), удивился, так как в версии 5.6 её не было, может эта dll обеспечивает передачу потокового видео и аудио с устройства... пока не ясно, подумал посмотреть её функции но возвратило вот что:
Я был просто ошарашен, поискав инфу в интернете, я узнал что это нормально для тех dll которые написаны на CPP, но как их тогда вызывать, я подумал что какую то магию нужно применить, но оказалось нет, они так и вызываются, потом до меня допёрло что я где - то видел уже такие функции и оказалось что я был прав, такие функции на CPP оказывается не спроста, если кто не знает в чём здесь магия, я ниже прикрепляю просмотр функций из dll, но он не простой, я не автор dll для просмотра таких функции, я позаимствовал пример на форуме по PureBasic, но я был очень удивлён когда воспользовался просмотром функций, можно узнать не только имя самой функции но и её параметры
Код пример:
В функции GetFunctionName последний параметр необходим только для тех dll которые написаны на CPP, если в dll функции не выглядят так как приведено в примере выше, значит параметр нужно изменить на 1 (единицу). Хочется узнать Ваше мнение по поводу Vivo.dll, для чего она нужна и возможно ли её использование.
Vivo & GFNCPP
Код:
??0?$VIVOSingleton@VVIVOAudioDeviceControl@@@@QAE@ABV0@@z
??0?$VIVOSingleton@VVIVOAudioDeviceControl@@@@QAE@XZ
ну и так далее.....
Я был просто ошарашен, поискав инфу в интернете, я узнал что это нормально для тех dll которые написаны на CPP, но как их тогда вызывать, я подумал что какую то магию нужно применить, но оказалось нет, они так и вызываются, потом до меня допёрло что я где - то видел уже такие функции и оказалось что я был прав, такие функции на CPP оказывается не спроста, если кто не знает в чём здесь магия, я ниже прикрепляю просмотр функций из dll, но он не простой, я не автор dll для просмотра таких функции, я позаимствовал пример на форуме по PureBasic, но я был очень удивлён когда воспользовался просмотром функций, можно узнать не только имя самой функции но и её параметры
Код пример:
Код:
Global $Dll = DllOpen(@ScriptDir & '\gfncpp.dll')
$hForm = GUICreate('Get Function Name`s', 600, 400)
$ListView = GUICtrlCreateListView('Function Name', 0, 0, 600, 400)
GUICtrlSendMsg($ListView, 0x101E, 0, 595)
GUISetState()
$FuncList = GetFunctionName(@ScriptDir & '\vivo.dll', 256)
$GetName = StringSplit($FuncList, "|")
For $i = 1 To $GetName[0]
GUICtrlCreateListViewItem($GetName[$i], $ListView)
Next
While 1
Switch GUIGetMsg()
Case -3
Exit
EndSwitch
WEnd
Func GetFunctionName($PathDLL, $LenBuff, $Flag = 0)
Local $aRet = DllCall($Dll, 'str', 'GetFunctionName', 'str', $PathDLL, 'int', $LenBuff, 'int', $Flag)
Return $aRet[0]
EndFunc
В функции GetFunctionName последний параметр необходим только для тех dll которые написаны на CPP, если в dll функции не выглядят так как приведено в примере выше, значит параметр нужно изменить на 1 (единицу). Хочется узнать Ваше мнение по поводу Vivo.dll, для чего она нужна и возможно ли её использование.
Vivo & GFNCPP