ayuda con sintaxis en un modulo

Iniciado por rapbyone, 22 Septiembre 2014, 19:04 PM

0 Miembros y 1 Visitante están viendo este tema.

rapbyone

amigos. necesito que un modulo utilice una librería que no está en la ruta en donde se encuentra un exe, de esta forma funciona sin problemas llamando a la dll desde disco local C

Public Declare Function Wiz_SingleEntryUnzip Lib "C:\Unzip32.dll" (ByVal ifnc As Long, ByRef ifnv As ZIPnames, ByVal xfnc As Long, ByRef xfnv As ZIPnames, dcll As UNZIPOPTIONS, Userf As UNZIPUSERFUNCTION) As Long


Pero si lo hago con App.Path, de esta forma no funciona:

Public Declare Function Wiz_SingleEntryUnzip Lib App.Path & "\1\Unzip32.dll" (ByVal ifnc As Long, ByRef ifnv As ZIPnames, ByVal xfnc As Long, ByRef xfnv As ZIPnames, dcll As UNZIPOPTIONS, Userf As UNZIPUSERFUNCTION) As Long

me da error de compilación, ¿Cuál seria la forma correcta amigos?
Muchas gracias :laugh:

MCKSys Argentina

Hola!

Te doy algunas ideas de lo que puedes hacer:

1) Colocar el path de la dll en la variable de entorno PATH y definir la misma sólo con el nombre. De esta forma el SO la puede hallar. Osea:

Código (vb) [Seleccionar]
Public Declare Function Wiz_SingleEntryUnzip Lib "Unzip32.dll" (ByVal ifnc As Long, ByRef ifnv As ZIPnames, ByVal xfnc As Long, ByRef xfnv As ZIPnames, dcll As UNZIPOPTIONS, Userf As UNZIPUSERFUNCTION) As Long

2) Copiar la dll en el path de la app.

3) Usar CallApiByName. o hacer tu propio hack con CallWindowProc.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


rapbyone

Cita de: MCKSys Argentina en 22 Septiembre 2014, 19:21 PM
Hola!

Te doy algunas ideas de lo que puedes hacer:

1) Colocar el path de la dll en la variable de entorno PATH y definir la misma sólo con el nombre. De esta forma el SO la puede hallar. Osea:

Código (vb) [Seleccionar]
Public Declare Function Wiz_SingleEntryUnzip Lib "Unzip32.dll" (ByVal ifnc As Long, ByRef ifnv As ZIPnames, ByVal xfnc As Long, ByRef xfnv As ZIPnames, dcll As UNZIPOPTIONS, Userf As UNZIPUSERFUNCTION) As Long

2) Copiar la dll en el path de la app.

3) Usar CallApiByName. o hacer tu propio hack con CallWindowProc.

Saludos!

gracias por tu respuesta amigo
la 2 la descarto, por que no quiero que la DLL este en la misma ruta
y para la 3era no tengo los conocimientos como para hacerlo.

a que te refieres con colocar la ruta de la dll en la variable de entorno PATH? que tendría que hacer, estoy empezando con vb6 y no logro entenderlo
gracias amigo

MCKSys Argentina

Cita de: rapbyone en 22 Septiembre 2014, 19:47 PM
a que te refieres con colocar la ruta de la dll en la variable de entorno PATH? que tendría que hacer, estoy empezando con vb6 y no logro entenderlo
gracias amigo

A algo como esto:

Código (vb) [Seleccionar]

Private Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long
Private Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Sub Command1_Click()
Dim strBuffer As String
Dim lngStatus As Long

strBuffer = Space$(1024)

lngStatus = GetEnvironmentVariable("Path", strBuffer, Len(strBuffer))
If lngStatus > 0 Then
    strBuffer = Left$(strBuffer, lngStatus)
   
    strBuffer = strBuffer & ";C:\DLLFiles"

    lngStatus = SetEnvironmentVariable("Path", strBuffer)
End If

End Sub


Fuente: click

Saludos!

PD: Por las dudas, lee esto.
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


rapbyone

Prefecto amigo, lo logre, muchas gracias