Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   Cocina PowerCOBOL (https://www.cobolforo.es/forumdisplay.php?f=24)
-   -   [PowerCOBOL] CALL de cualquier DLL sin *.LIB ni "LoadLibrary" (https://www.cobolforo.es/showthread.php?t=216)

Kuk 25 de agosto de 2015 20:49

CALL de cualquier DLL sin *.LIB ni "LoadLibrary"
 
Amigos, he descubierto esto para el PowerCOBOL v3 y funciona en la version 9 tambien!!! :apl:

Cuando queremos llamar una DLL y no tenemos la LIB, simplemente hay que:
  1. Crear un fichero de texto y llamarlo COBOL85.CBR
  2. Dentro escribir el nombre del Form desde el que se va a llamar y .ENTRY
  3. Nombres de las funciones = los nombres de las DLL-s correspondientes

Por ejemplo:

Código:

[MainForm.Entry]
FtpConnect=FTP.dll
FtpDisconnect=FTP.dll
LogIn=Protocol.dll
InvalidateRect=User32.dll

En el código debemos llamar estas funciones en dinámico, es decir por variable:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  FUNC  PIC X(20).
  5.  01  hWnd  PIC S9(9) COMP-5.
  6.  PROCEDURE       DIVISION.
  7.      
  8.      MOVE "hwnd" OF POW-SELF TO hWnd
  9.      MOVE "InvalidateRect" TO FUNC
  10.      
  11.      CALL FUNC WITH STDCALL USING BY VALUE hWnd
  12.                                   BY VALUE 0
  13.                                   BY VALUE 1
  14.          

¡¡¡Listo!!! :cerv:

Hrmcobol 30 de junio de 2016 21:12

Genial Kuk, voy a probarlo y te cuento.

Resulta que yo puse en el buscador del foro el texto "DLL" y no me trajo ningún tema,
supongo que estaré buscando mal.

Josber 1 de julio de 2016 08:07

Cita:

Citación del post de Hrmcobol (Mensaje 2110)
Resulta que yo puse en el buscador del foro el texto "DLL" y no me trajo ningún tema,
supongo que estaré buscando mal.

Las búsquedas en el foro, han de tener más de 3 carácteres, de lo contrario no funcionan bien, porque el buscador las "toma" como palabras de uso frecuente, (por ejemplo tipo a los artículos el la los las, etc.

Un saludo.-

Hrmcobol 19 de julio de 2016 23:17

Estimado Kuk, no doy "pieconbola" la dll se llama MLUSER32.DLL y debo hacer un call a: "mluser" que tiene 5 parámetros numéricos.
Si no te molesta podrías mandarme el código y el cobol85.cbr, ya que no tengo experiencia en este tipo de llamadas.
Saludos

Kuk 20 de julio de 2016 08:38

Hrmcobol, en tu COBOL85.CBR, al final del fichero debe añadir (cambiando MainForm por el nombre del Form que va a llamar la DLL):

Código:

[MainForm.Entry]
mluser=MLUSER32.DLL

En el Form que llama la DLL pones:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  FUNC  PIC X(20).
  5.  01  NUM1  PIC S9(9) COMP-5.
  6.  01  NUM2  PIC S9(9) COMP-5.
  7.  01  NUM3  PIC S9(9) COMP-5.
  8.  01  NUM4  PIC S9(9) COMP-5.
  9.  PROCEDURE       DIVISION.
  10.          
  11.      MOVE "mluser" TO FUNC
  12.      
  13.      CALL FUNC WITH STDCALL USING BY VALUE NUM1
  14.                                   BY VALUE NUM2
  15.                                   BY VALUE NUM3
  16.                                   BY VALUE NUM4

Debes poner MLUSER32.DLL en el mismo directorio que tu programa PowerCOBOL.

Si no te sale aún, dime más concretamente qué es exactamente lo que no logras hacer :)

Hrmcobol 26 de julio de 2016 19:24

1 Archivos Adjunto(s)
Amigo Kuk, te adjunto la DLL La LIB, quiero hacer un call a "mluser", te adjunto un VB por si tu puedes abriro, este vb funciona correctamente, podras mirlo un poco
Saludos

Kuk 27 de julio de 2016 23:14

Hrmcobol, me pillas más liado que nunca amigo... Voy a mirar si puedo mirarlo la semana que viene, antes no creo que pueda...

Hrmcobol 29 de julio de 2016 22:23

Estimado kuk, resolví a medias el tema de la DLL, ya puedo acceder a la misma, el problema era el de siempre, uno mira y no ve, tenia mal escrito los parámetros.
Gracias como siempre.
Los Mantengo al tanto a medida que resuelva todo

Hrmcobol 30 de julio de 2016 01:43

PROBLEMA RESUELTO !! !! !!!

GRACIAS KUK POR EL POST !!!

Kuk 1 de agosto de 2016 23:42

Cita:

Citación del post de Hrmcobol (Mensaje 2229)
resolví a medias el tema

Dinos la resolución completa, por si alguien tiene el mismo problema. ;)


La franja horaria es GMT +2. Ahora son las 16:38.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.