Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Sintaxis] llamar a aplication externa .EXE | hbetancur | NetCOBOL | 3 | 29 de mayo de 2021 11:58 |
| [Sintaxis] Saber si un EXE se esta ejecutando ?? | Hrmcobol | PowerCOBOL y WinAPI | 1 | 24 de noviembre de 2020 13:11 |
| [Sintaxis] Compratir variable con un EXE de PowerCOBOL | Recato53 | PowerCOBOL (ActiveX, v4 - v11) | 10 | 14 de febrero de 2017 17:18 |
| [Compilador] Fujitsu Cobol for Windows Call EXE | Joseg | NetCOBOL | 1 | 29 de octubre de 2016 23:18 |
| [Compilador] Compilar un Ejecutable (.exe) | Yonaider | RM/COBOL | 5 | 26 de mayo de 2016 09:19 |
![]() |
|
Administrador
![]()
|
@Joseg, a lo mejor no le has pasado ningún Nº de PID, porque a mi me funciona sin fallos.
También haz "Rebuild ALL" por si acaso. Aveces falla si no recompilamos por completo el proyecto (para refrescar todos los cachés, el Build es incremental). No, en "EnumWindowsProc" no he hecho ningún cambio. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
Powercobol 9.0 Código COBOL:
---> returning pAddress ---> pAddress = 0 Gracias |
|||||||||
|
|
|
|
Administrador
![]()
|
@Joseg, es que el nombre que le pones no es correcto. Desde fuera se le añade un guion bajo, por eso en vez de EnumWindowsProc@8 debe ser _EnumWindowsProc@8, por eso no te funciona. Copia y pega el código que puse yo tal cual y verás que funciona.
![]() NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
Hola @Kuk , esto es buenisimo por que desde powercobol 5.0
no puedo usar procedure-pointer , habia intentado de muchas formas poder llamar a una funcion y realizar un callback , con este procediemiento ahora puedo muchas gracias. Probe el ejemplo de llamar a un .exe por Procees_id y me funciono perfecto. Saludos ... |
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
Estoy haciendo esta llamada desde una DLL, ¿solo funciona si la llamo desde un EXE? Gracias |
|||||||||
|
|
|
|
Administrador
![]()
|
@Joseg, has probado copiando mi código tal cual? A lo mejor hay algún pequeño error en alguna parte. Es muy raro que no te funcione, no tiene "explicación científica" y nos funciona a 2 personas...
![]() Si funciona en un EXE, en una DLL debe funcionar con más razón porque las DLLs son pensadas para compartir funciones, los EXE son los puntos de entrada (que lo pueden hacer también pero es más raro). En este caso con el EXE egenrado por PowerCOBOL va sujeto al Run-Time, tiene siempre expuesto el punto de entrada MAINFORM. Y si hay funciones añadidas por nosotros, también aparecen: [ATTACH=CONFIG]1007[/ATTACH] @fastpho, no sabía que PowerCOBOL v5 no tenía tampoco PROCEDURE-POINTER. Me alegro de que te sirva el invento ![]() NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
El Foro es mi casa
![]()
|
Ok, usaré la primera forma. Llamarlo vía EXE funciona, vía DLL no funciona en absoluto. |
|||||||||
|
|
|
|
Administrador
![]()
|
@Joseg, mea culpa, es que hay un detalle importante! Efectivamente, no puede funcionar TAL CUAL en una DLL porque GetModuleHandleA, si no le damos nombre del módulo sino que le pasamos un NULO, devuelve el hModule del EXE que se cargó inicialmente (el Main, vamos). Así que luego GetProcAddress, aunque lo llamamos en una DLL, le pasamos el hModule que obtuvimos del EXE, y evidentemente no encuentra "EnumWindowsProc", (a no ser que también esté presente en el EXE).
Por lo tanto, si lo queremos hacer SOLO en una DLL, lo que hay que hacer es pasarle a GetModuleHandleA el nombre de la DLL en parámetro en vez de un NULO. Es decir, reemplazar: Código COBOL:
por Código COBOL:
O si no, dejar el fichero "EnumWindowsProc" en el EXE y no meterlo en la DLL. De hecho es por eso que a @fastpho le ha funcionado, seguro que ha dejado el fichero "EnumWindowsProc" en el EXE pero hizo la llamada a GetProcAddress en la DLL pasándole el hModule del EXE que obtuvo llamando a GetModuleHandleA con el parámetro a NULO (h"00"). No sé si me he explicado bien. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
![]() |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||