elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Trabajar con Funciones de DLL
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Trabajar con Funciones de DLL  (Leído 6,564 veces)
my_sistemas

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Trabajar con Funciones de DLL
« en: 12 Marzo 2011, 00:37 am »

Buenas noches, estoy tratando de hacer un software que use las funciones establecidas en una DLL, dicha DLL no fue creada por mi ni tengo el source, pero pude ver su contenido usando ciertos programas, siendo su contenido el siguiente.

Código:
//BBCFPCOM 1.0 Type Library
//Version: 1.0
BBCFPCOMLib;
GUID = {C2CFDD51-0603-4889-9FF5-B943AA46118B};


Enum CFP_TYPE;
  CFP_TYPE_NORMAL = 0;
  CFP_TYPE_PATRIOT = 1;
  CFP_TYPE_EDW = 2;
  CFP_TYPE_RMA = 3;
  CFP_TYPE_STP = 4;
  CFP_TYPE_BRL = 5;

//CFPGRSCOM Class
CoClass CFPGRSCOM;
GUID = {3B5626A7-724D-4F17-A980-002FDC26B567};

//BBCFPCOM 1.0 Type Library
Interface ICFPGRSCOM;
GUID = {33CF20BC-B452-4529-B78E-B48E821AF3A8};
  //Connect to Any USB device found
  function ConnectAnyUSB(nMaxTimeoutMs: I4; nResetTimeOutMs: I4): HResult; stdcall;
  //method ConnectToBootImage
  function ConnectToBootImage: HResult; stdcall;
  //Erase files and OS
  function Wipe(bWipeOS: Bool): HResult; stdcall;

Entonces por lo que veo dicha DLL (Desarrollada en .NET) Tiene las siguientes funciones:
-ConnectAnyUSB
-ConnectToBootImage
-Wipe

Necesito usar dichas funciones, pero no logro hacerlo.

Hice un nuevo proyecto en Visual Basic 6, registre dicha DLL y la agregue como referencia en mi proyecto.
Lugo hice el siguiente code:
Código:
Dim CFP As BBCFPCOMLib.CFPGRSCOM

Private Sub Command1_Click()
Set CFP = New BBCFPCOMLib.CFPGRSCOM
CFP.ConnectAnyUSB 50, 50
CFP.ConnectToBootImage
End Sub


Dandome error de Timeout en ConnectToBootImage, cuando dicha funcion no tiene TimeOut.

Tambien intente llamando a la DLL desde un modulo:
Código:
Public Declare Function ConnectToBootImage Lib "BBCFPCOM.dll" ()
Public Declare Function ConnectAnyUSB Lib "BBCFPCOM.dll" (ByVal nMaxTimeoutMs As Integer, ByVal nResetTimeOutMs As Integer)

y luego haciendo la llamada desde dicha DLL
Código:
Private Sub Command1_Click()
Call Module1.ConnectAnyUSB(50, 0)
Call Module1.ConnectToBootImage
End Sub

Y ahora me muestra que:
"Can't Find DLL entry point ConnectAnyUSB in BBCFPCOM.dll"
me dice que no encuentra dicha funcion, pero si presiono F2 si aparece como una funcion de dicha DLL.

Descarga la DLL
http://www.megaupload.com/?d=P24K7EPM


En línea

cuando uno es grande...
la calidad nunca la pierde...
my_sistemas

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Trabajar con Funciones de DLL
« Respuesta #1 en: 12 Marzo 2011, 01:17 am »

Ahora agregue la DLL como referencia en el proyecto y escribi el siguiente codigo:

Código:
Option Explicit
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private WithEvents frmNET As BBCFPCOMLib.CFPGRSCOM

Private Sub Command1_Click()
Set frmNET = New CFPGRSCOM
frmNET.ConnectAnyUSB 50, 0
frmNET.ConnectToBootImage
End Sub

Y se me queda colgada la PC al momento de ConnectAnyUSB, alguna ayuda?? tengo windows 7, formateare y pondre winxp para ver qe tal.


En línea

cuando uno es grande...
la calidad nunca la pierde...
my_sistemas

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Trabajar con Funciones de DLL
« Respuesta #2 en: 12 Marzo 2011, 03:46 am »

Cmbie a Visual Basic .NET y ahora si me reconoce la interface ICFPGRSCOM

Código:
Public Class Form1
    Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
    Dim CFP As BBCFPCOMLib.ICFPGRSCOM
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        CFP.ConnectAnyUSB(50, 0)
    End Sub
End Class

Pero ahora me da un error con el CFP.
No se controlo NullReferenceException
Referencia a objeto no establecida como instancia de un objeto
En línea

cuando uno es grande...
la calidad nunca la pierde...
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Trabajar con Funciones de DLL
« Respuesta #3 en: 12 Marzo 2011, 03:56 am »

sera que te falta instanciar el objeto CFP con la palabra New, ahi solo la declaraste.

PD: esa api InitCommonControls no es necesaria en .NET
En línea

my_sistemas

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Trabajar con Funciones de DLL
« Respuesta #4 en: 12 Marzo 2011, 04:03 am »

ese es el detalle... que no me deja poner:
Código:
Dim cfp As New BBCFPCOMLib.ICFPGRSCOM
Ya que NEW no se puede utilizar en una interfaz
En línea

cuando uno es grande...
la calidad nunca la pierde...
my_sistemas

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Trabajar con Funciones de DLL
« Respuesta #5 en: 12 Marzo 2011, 04:27 am »

Código:
'New' cannot be used on an interface 

Instrucción Dim (Visual Basic) utiliza una cláusula New (Visual Basic) al declarar una variable para que sea de un tipo de interfaz.

Aunque una interfaz es un tipo de referencia, no puede crear una instancia de él. Sólo puede utilizar New para crear una instancia de una clase o una estructura.

Identificador de error: BC30375

Para corregir este error
1.Si la variable va a ser de un tipo de interfaz, quite la palabra clave New.

2.Si la variable va a hacer referencia a una instancia, declárela para que sea de una clase o un tipo de estructura. Conserve la palabra clave New para crear una instancia.
FUENTE: MSDN

Mas no entiendo dicha solucion
En línea

cuando uno es grande...
la calidad nunca la pierde...
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Trabajar con Funciones de DLL
« Respuesta #6 en: 12 Marzo 2011, 04:58 am »

.
Que idiotes puse :'(
« Última modificación: 12 Marzo 2011, 09:06 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Trabajar con Funciones de DLL
« Respuesta #7 en: 12 Marzo 2011, 05:01 am »

perdona no sabia que era una interfaz, recien me bajo la libreria y lo vi, no estoy seguro pero creo que debes implementarla asi:

Código
  1. Imports BBCFPCOMLib
  2.  
  3. Public Class Form1
  4.  
  5.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.        Dim ser As New Libreria
  7.        ser.ConnectAnyUSB(50, 0)
  8.    End Sub
  9. End Class
  10.  
  11. Public Class Libreria
  12.  
  13.    Implements BBCFPCOMLib.CFPGRSCOM
  14.  
  15.    Public Event OnDebugMessage(ByVal nLogLevel As Integer, ByVal bstrMessage As String) Implements BBCFPCOMLib._ICFPEvents_Event.OnDebugMessage
  16.  
  17.    Public Event OnNeedPassword(ByVal nTriesRemaining As Integer, ByRef password As String) Implements BBCFPCOMLib._ICFPEvents_Event.OnNeedPassword
  18.  
  19.    Public Event OnProgress(ByVal bstrCode As String, ByVal nPercent As Integer, ByVal ulExtraInfo As UInteger) Implements BBCFPCOMLib._ICFPEvents_Event.OnProgress
  20.  
  21.    Public Sub Abort() Implements BBCFPCOMLib.ICFPGRSCOM.Abort
  22.  
  23.    End Sub
  24.  
  25.    Public Sub Connect(ByVal nComport As Integer, ByVal nConnectBaudRate As Integer, ByVal nMaxTimeoutMs As Integer, ByVal nResetTimeOusMs As Integer) Implements BBCFPCOMLib.ICFPGRSCOM.Connect
  26.  
  27.    End Sub
  28.  
  29.    Public Sub ConnectAnyUSB(ByVal nMaxTimeoutMs As Integer, ByVal nResetTimeOutMs As Integer) Implements BBCFPCOMLib.ICFPGRSCOM.ConnectAnyUSB
  30.  
  31.    End Sub
  32.  
  33.    Public Sub ConnectToBootImage() Implements BBCFPCOMLib.ICFPGRSCOM.ConnectToBootImage
  34.  
  35.    End Sub
  36.  
  37.    Public Sub ConnectToBootrom() Implements BBCFPCOMLib.ICFPGRSCOM.ConnectToBootrom
  38.  
  39.    End Sub
  40.  
  41.    Public Property ConnectType() As BBCFPCOMLib.CFP_TYPE Implements BBCFPCOMLib.ICFPGRSCOM.ConnectType
  42.        Get
  43.  
  44.        End Get
  45.        Set(ByVal value As BBCFPCOMLib.CFP_TYPE)
  46.  
  47.        End Set
  48.    End Property
  49.  
  50.    Public Sub ConnectUSB(ByVal bstrProperty As String, ByVal bstrValue As String, ByVal nMaxTimeoutMs As Integer, ByVal nResetTimoeOutMs As Integer) Implements BBCFPCOMLib.ICFPGRSCOM.ConnectUSB
  51.  
  52.    End Sub
  53.  
  54.    Public Sub Disconnect1() Implements BBCFPCOMLib.ICFPGRSCOM.Disconnect
  55.  
  56.    End Sub
  57.  
  58.    Public Sub GetBootromInfo(ByRef pulBRver As UInteger, ByRef pbSecurityEnabled As Boolean) Implements BBCFPCOMLib.ICFPGRSCOM.GetBootromInfo
  59.  
  60.    End Sub
  61.  
  62.    Public Sub GetCFPVersion(ByRef pulCFPver As UInteger) Implements BBCFPCOMLib.ICFPGRSCOM.GetCFPVersion
  63.  
  64.    End Sub
  65.  
  66.    Public Function GetCOMBuildVersion() As String Implements BBCFPCOMLib.ICFPGRSCOM.GetCOMBuildVersion
  67.  
  68.    End Function
  69.  
  70.    Public Function GetCOMBuildVersionID() As UInteger Implements BBCFPCOMLib.ICFPGRSCOM.GetCOMBuildVersionID
  71.  
  72.    End Function
  73.  
  74.    Public Function GetFlashSizeInBytes() As UInteger Implements BBCFPCOMLib.ICFPGRSCOM.GetFlashSizeInBytes
  75.  
  76.    End Function
  77.  
  78.    Public Sub GetOSVersionOfSFI(ByVal bstrFileName As String, ByRef pulOSver As UInteger) Implements BBCFPCOMLib.ICFPGRSCOM.GetOSVersionOfSFI
  79.  
  80.    End Sub
  81.  
  82.    Public Sub GetOSVersionOfSFIEx(ByVal bstrFileName As String, ByRef pulOSver As UInteger, ByRef pbstrOSver As String) Implements BBCFPCOMLib.ICFPGRSCOM.GetOSVersionOfSFIEx
  83.  
  84.    End Sub
  85.  
  86.    Public Function GetPatriotVersion() As String Implements BBCFPCOMLib.ICFPGRSCOM.GetPatriotVersion
  87.  
  88.    End Function
  89.  
  90.    Public Sub GetPlatformID(ByRef pulPID As UInteger, ByRef pbstrDeviceString As String) Implements BBCFPCOMLib.ICFPGRSCOM.GetPlatformID
  91.  
  92.    End Sub
  93.  
  94.    Public Sub GetSFIOSVersionPlatID(ByVal bstrFileName As String, ByRef pulOSver As UInteger, ByRef pulPlatID As UInteger) Implements BBCFPCOMLib.ICFPGRSCOM.GetSFIOSVersionPlatID
  95.  
  96.    End Sub
  97.  
  98.    Public Function GetSupportedBands() As UInteger Implements BBCFPCOMLib.ICFPGRSCOM.GetSupportedBands
  99.  
  100.    End Function
  101.  
  102.    Public Function GetVendorID() As UShort Implements BBCFPCOMLib.ICFPGRSCOM.GetVendorID
  103.  
  104.    End Function
  105.  
  106.    Public Sub GetVersionOfAPPfile(ByVal bstrFileName As String, ByRef pbstrAPPversion As String, ByRef pbVersionValid As Boolean, ByRef pbstrAppNumber As String, ByRef pbNumberValid As Boolean) Implements BBCFPCOMLib.ICFPGRSCOM.GetVersionOfAPPfile
  107.  
  108.    End Sub
  109.  
  110.    Public Sub HeadInTheSandMode(ByVal bChangeMode As Boolean, ByRef pbHISMode As Boolean) Implements BBCFPCOMLib.ICFPGRSCOM.HeadInTheSandMode
  111.  
  112.    End Sub
  113.  
  114.    Public Sub InvokeMethod(ByVal bstrMethod As String, ByRef pulParam As UInteger, ByRef pbstrParam As String) Implements BBCFPCOMLib.ICFPGRSCOM.InvokeMethod
  115.  
  116.    End Sub
  117.  
  118.    Public Function IsDesktopRAMImage() As Boolean Implements BBCFPCOMLib.ICFPGRSCOM.IsDesktopRAMImage
  119.  
  120.    End Function
  121.  
  122.    Public Sub LoadBootrom(ByVal bstrFileName As String) Implements BBCFPCOMLib.ICFPGRSCOM.LoadBootrom
  123.  
  124.    End Sub
  125.  
  126.    Public Sub NukeDevice() Implements BBCFPCOMLib.ICFPGRSCOM.NukeDevice
  127.  
  128.    End Sub
  129.  
  130.    Public Sub PatriotConnectToTunnel() Implements BBCFPCOMLib.ICFPGRSCOM.PatriotConnectToTunnel
  131.  
  132.    End Sub
  133.  
  134.    Public Sub PatriotDisconnect() Implements BBCFPCOMLib.ICFPGRSCOM.PatriotDisconnect
  135.  
  136.    End Sub
  137.  
  138.    Public Sub PatriotGetInfo(ByRef pulPATver As UInteger, ByRef pulTunnelver As UInteger, ByRef pbBatteryVoltageOk As Boolean) Implements BBCFPCOMLib.ICFPGRSCOM.PatriotGetInfo
  139.  
  140.    End Sub
  141.  
  142.    Public Sub PatriotGetOSVersionOfFile(ByVal bstrFileName As String, ByRef pulOSver As UInteger) Implements BBCFPCOMLib.ICFPGRSCOM.PatriotGetOSVersionOfFile
  143.  
  144.    End Sub
  145.  
  146.    Public Function PatriotGetOSVersionOfFileStr(ByVal bstrFileName As String) As String Implements BBCFPCOMLib.ICFPGRSCOM.PatriotGetOSVersionOfFileStr
  147.  
  148.    End Function
  149.  
  150.    Public Function PatriotInBerbugMode() As Boolean Implements BBCFPCOMLib.ICFPGRSCOM.PatriotInBerbugMode
  151.  
  152.    End Function
  153.  
  154.    Public Sub PatriotLastLoadSuccessful(ByRef pbSuccess As Boolean) Implements BBCFPCOMLib.ICFPGRSCOM.PatriotLastLoadSuccessful
  155.  
  156.    End Sub
  157.  
  158.    Public Sub PatriotLoadImage(ByVal bstrFileName As String) Implements BBCFPCOMLib.ICFPGRSCOM.PatriotLoadImage
  159.  
  160.    End Sub
  161.  
  162.    Public Sub ReloadFileSystem(ByVal bstrFileName As String) Implements BBCFPCOMLib.ICFPGRSCOM.ReloadFileSystem
  163.  
  164.    End Sub
  165.  
  166.    Public Sub ReloadOS(ByVal bstrFileName As String) Implements BBCFPCOMLib.ICFPGRSCOM.ReloadOS
  167.  
  168.    End Sub
  169.  
  170.    Public Sub ReloadPlantImage(ByVal bstrFileName As String) Implements BBCFPCOMLib.ICFPGRSCOM.ReloadPlantImage
  171.  
  172.    End Sub
  173.  
  174.    Public Sub ReloadPlantImageWithPatriot(ByVal bstrFileName As String) Implements BBCFPCOMLib.ICFPGRSCOM.ReloadPlantImageWithPatriot
  175.  
  176.    End Sub
  177.  
  178.    Public Sub ResetPatriot() Implements BBCFPCOMLib.ICFPGRSCOM.ResetPatriot
  179.  
  180.    End Sub
  181.  
  182.    Public Sub SaveFileSystem(ByVal bstrFileName As String, ByVal bVerifyToAPP As Boolean) Implements BBCFPCOMLib.ICFPGRSCOM.SaveFileSystem
  183.  
  184.    End Sub
  185.  
  186.    Public Sub SetConnectValues(ByVal nMaxTimeoutMs As Integer, ByVal bIncremental As Boolean) Implements BBCFPCOMLib.ICFPGRSCOM.SetConnectValues
  187.  
  188.    End Sub
  189.  
  190.    Public Sub SetMassStorage(ByVal nOn As Integer) Implements BBCFPCOMLib.ICFPGRSCOM.SetMassStorage
  191.  
  192.    End Sub
  193.  
  194.    Public Sub SuperNukeDevice() Implements BBCFPCOMLib.ICFPGRSCOM.SuperNukeDevice
  195.  
  196.    End Sub
  197.  
  198.    Public Sub ToastDevice(ByVal bstrPassword As String) Implements BBCFPCOMLib.ICFPGRSCOM.ToastDevice
  199.  
  200.    End Sub
  201.  
  202.    Public Sub WhoAmI(ByVal bstrWhoAmI As String) Implements BBCFPCOMLib.ICFPGRSCOM.WhoAmI
  203.  
  204.    End Sub
  205.  
  206.    Public Sub Wipe(ByVal bWipeOS As Boolean) Implements BBCFPCOMLib.ICFPGRSCOM.Wipe
  207.  
  208.    End Sub
  209. End Class
  210.  

todas esas funciones son las que tiene la dll dentro, no las escribi yo, me las detecto y escribio automaticamente el visual studio cuando implemente de BBCFPCOMLib.CFPGRSCOM

saludos.
En línea

my_sistemas

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Trabajar con Funciones de DLL
« Respuesta #8 en: 12 Marzo 2011, 07:05 am »

Hola, gracias por tu respuesta pero por alguna razon no me esta haciendo nada el programa, es decir, no hace ninguna funcion ni lanza ningun errror
En línea

cuando uno es grande...
la calidad nunca la pierde...
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Trabajar con Funciones de DLL
« Respuesta #9 en: 12 Marzo 2011, 13:39 pm »

Hola, gracias por tu respuesta pero por alguna razon no me esta haciendo nada el programa, es decir, no hace ninguna funcion ni lanza ningun errror

Porque esta implementando la interfaz, en una clase vacia, fijate la documentacion de la libreria haber que tienes que hacer en cada evento
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Trabajar cn archivos
Programación Visual Basic
Lambda 1 1,482 Último mensaje 18 Abril 2006, 22:28 pm
por NYlOn
Trabajar con un TXT que broollo...
Programación Visual Basic
Pitoniso 6 1,802 Último mensaje 23 Octubre 2006, 17:57 pm
por ~~
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines