![]() |
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:
Por ejemplo: Código:
[MainForm.Entry]Código COBOL:
¡¡¡Listo!!! :cerv: |
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. |
Cita:
Un saludo.- |
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 |
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]Código COBOL:
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 :) |
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 |
Hrmcobol, me pillas más liado que nunca amigo... Voy a mirar si puedo mirarlo la semana que viene, antes no creo que pueda...
|
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 |
PROBLEMA RESUELTO !! !! !!!
GRACIAS KUK POR EL POST !!! |
Cita:
|
Estimados adjunto las lineas finales de la llamada
Mi problema era que definía mal las variables NUMX ya que no conocía/entendía/etc la declaración BINARY-SHORT / BINARY-LONG Código COBOL:
El Archivo COBOL85.CBR Código COBOL:
Tal cual lo describio KUK en el inicio del post Saludos y Gracias Por Estar Alli !!!! |
1 Archivos Adjunto(s)
Buenos días.
Quiero comprobar si existe conexión a internet. He probado todo las opciones que he encontrado en el Foro, algo estoy programando mal. Intento usar COBOL85.CBR y desde el programa de PowerCobol llamo a la función. Pero responde con u mensaje de ERROR. Cita:
|
Amigo Recato53, el fichero COBOL85.CBR lo tienes que poner en el mismo directorio que el ejecutable (en la carpeta mi_projecto\DEBUG), si no lo haces no va a funcionar. El ejecutable cuando arranca, por medio del Run-Time se busca el fichero COBOL85.CBR en el mismo directorio, y la lista de ENTRY-s que hay en realidad se cargan vía "LoadLibrary" y "GetProcAddress" pero se hace por el Run-Time y no por nosotros.
|
Cita:
|
Recato53, también tienes mal escrito el nombre de la función InternetCheckConnectionA en el fichero COBOL85.CBR. Tienes InternetcheckConnectionA en vez de InternetCheckConnectionA, en caso de rutinas C y WinAPI las minúsculas/mayúsculas importan. ;)
|
Muchas gracias KUK.
Por fin funciona la rutina para testear si hay conexión a internet. Si llamo a este programa (.exe) desde un programa en PowerCobol(.DLL), como recupero el valor en el programa de PowerCobol. |
Recato53, ¿por qué lo quieres hacer como un EXE? Haz una simple rutina COBOL y a llamas donde la necesites.
Pero si quieres hacerlo como dices, y no quieres que sea un DLL sino un EXE... :piensa: Puedes intentar hacer un MOVE al RETURN-CODE en el EXE, y en el programa llamante recibes dicho valor en el campo RETURNING. Pruébalo y nos cuentas. |
Cita:
La estructura de carpetas que empleo en mis aplicaciones es la siguiente: \Aplicación \Aplicación\Datos \Aplicación\Programas (aquí están todas las 'dll' , 'exe' y archivos necesarios para ejecutar la aplicación). El programa que ejecuta la aplicación esta en \Aplicación\Aplicacion.exe Desde una 'dll' llamo a la rutina que quiero comprobar si hay conexión a Internet. Como el archivo COBOL85.CBR tiene que estar en la misma carpeta del programa que llama a esta rutina, necesito recuperar el valor en la DLL que resulta de llamar a la rutina 'exe'. Según me indicas puedo programar RETURN-CODE y recogerlo con RETURNING, me puedes hacer llegar un ejemplo, no consigo que esto me funciones. Muchas gracias. Un saludo. |
Recato53, a ver, no me estoy enterando de cual es el problema con el COBOL85.CBR. Puede haber varios por aplicación, pero sólo 1 por directorio. Es decir, puedes tener uno en \Aplicación\ y otro \Aplicación\Programas\.
Así que:
En cuanto lo que dije sobre el RC, me he equivocado, no va a ser posible, porque estamos en mundo GUI y hay subrutinas que se ejecutan después de salir del código COBOL. Pero tengo una idea y te la voy a explicar en un tema separado ;) |
Kuk, Estoy desarrollando una rutina para pasar un archivo TXT, de ANSI a UTF-8 y viceversa cuando la tenga acabada y documentada, donde la tengo que cargar en el FORO.
Un saludo. |
Recato53, pues en alguno de los subforos "Cocina". Si esa rutina es genérica e independiente del compilador, cuélgala en el subforo "Cocina" general. Si no, dependiendo del compilador que hayas usado (y tecnología, como COM o WinAPI) la cuelgas en el correspondiente. Eso sí, creando un tema nuevo. ;)
|
| La franja horaria es GMT +2. Ahora son las 14:46. |
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.