Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: rapbyone en 22 Septiembre 2014, 19:04 pm



Título: ayuda con sintaxis en un modulo
Publicado por: rapbyone en 22 Septiembre 2014, 19:04 pm
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

Código:
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:

Código:
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:


Título: Re: ayuda con sintaxis en un modulo
Publicado por: 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
  1. 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!


Título: Re: ayuda con sintaxis en un modulo
Publicado por: rapbyone en 22 Septiembre 2014, 19:47 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
  1. 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


Título: Re: ayuda con sintaxis en un modulo
Publicado por: MCKSys Argentina en 22 Septiembre 2014, 21:46 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
  1. Private Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long
  2. Private Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
  3.  
  4. Private Sub Command1_Click()
  5. Dim strBuffer As String
  6. Dim lngStatus As Long
  7.  
  8. strBuffer = Space$(1024)
  9.  
  10. lngStatus = GetEnvironmentVariable("Path", strBuffer, Len(strBuffer))
  11. If lngStatus > 0 Then
  12.    strBuffer = Left$(strBuffer, lngStatus)
  13.  
  14.    strBuffer = strBuffer & ";C:\DLLFiles"
  15.  
  16.    lngStatus = SetEnvironmentVariable("Path", strBuffer)
  17. End If
  18.  
  19. End Sub
  20.  

Fuente: click (http://www.vbforums.com/showthread.php?390685-RESOLVED-Setting-the-PATH-variable-in-Visual-Basic)

Saludos!

PD: Por las dudas, lee esto (http://es.wikipedia.org/wiki/Variable_de_entorno).


Título: Re:
Publicado por: rapbyone en 23 Septiembre 2014, 09:15 am
Prefecto amigo, lo logre, muchas gracias