【问题标题】:how call dll export function in vb6?vb6中如何调用dll导出函数?
【发布时间】:2018-01-23 09:46:56
【问题描述】:

如何在 vb6 中调用 dll 导出功能? CallWindowProc 已限制在参数中。 例如如何调用这个函数?

Dim lb As Long, pa As Long
lb = LoadLibrary("wininet.dll")
pa = GetProcAddress(lb, "InternetOpen")

【问题讨论】:

  • 为什么要使用 LoadLibrary 和 GetProcAddress 而不是仅仅声明访问它的函数?
  • @vincent-g 检查 vb 语言限制
  • CallWindowProc 预计将用于挂钩/子类化,而不是调用一些随机函数。在 vb6/vba 中调用 dll 函数预计将使用 Declare 语句来完成。
  • @vincent-g 没有办法吗?
  • 可能@user2522767 需要在运行时动态加载dll?

标签: dll vb6 getprocaddress


【解决方案1】:

这些定义从 pinvoke.net 复制并修改了 vb6 的变量类型。

我没有测试过这段代码。

Const INTERNET_OPEN_TYPE_PRECONFIG = 0  ' use registry configuration
Const INTERNET_OPEN_TYPE_DIRECT = 1 ' direct to net
Const INTERNET_OPEN_TYPE_PROXY = 3  ' via named proxy
Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4 ' prevent using java/script/INS

Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
    ByVal sAgent As String, _
    ByVal lAccessType As Long, _
    ByVal sProxyName As String, _
    ByVal sProxyBypass As String, _
    ByVal lFlags As Long) As Long

用法:

Dim hInet As Long
hInet = InternetOpen("HttpAgent", INTERNET_OPEN_TYPE_PRECONFIG, _
  "", "", 0)
If hInet = 0 Then 
  'Return or handle a False return status
End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2011-01-16
    • 2018-03-17
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多