Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL y WinAPI
PowerCOBOL y WinAPI Llamadas a la API de Windows en PowerCOBOL
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
iPhone SMS y tono de llamada Antorymixi Charladero - espacio libre 1 11 de diciembre de 2018 11:16
Tono de llamada en Android bellacampen Charladero - espacio libre 4 13 de noviembre de 2018 10:17
[Componente] AdvApi32.lib - no funciona Kuk PowerCOBOL v3 (V3L10, Win32) 2 30 de julio de 2015 09:27
[PowerCOBOL + COM/OLE] Llamada a SpellCheck de Word (correc. ortográfico) Rapinto Cocina PowerCOBOL 0 12 de marzo de 2015 00:54

Respuesta
 
Herramientas

  #1
Antiguo 17 de octubre de 2022, 19:24
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492
Predeterminado Llamada a Advapi32.lib
0 Inactivo Inactivo

A ver, he utilizado muchas veces la llamada a ésta API usando RegOpenKeyExA RegSetValueExA y RegCloseKey, aunque antes, siempre creaba a mano los valores necesarios en el registro de Windows para que no me diese ningún error, por lo que no tenía ningún problema, ahora quiero que si esas claves, no existen. crearlas, el problema es que cuando voy a usar RegCreateKeyEx, (me da igual usar esa que el Alias "RegCreateKeyExA", pasa lo mismo), al compilar, el "Linker" me tira el error

error LNK2001: unresolved external symbol _RegCreateKeyExA@20

Sé que esa función pertenece a esa librería, tengo el .lib incluido en el proyecto y también tengo incluido el parámetro ALPHAL(WORD), ¿alguna pista de qué puede pasar o faltar?, porque ya digo, con las otras llamadas a esa librería, no tengo ningún problema.

Muchas gracias
Josber is offline   Responder Con Cita
  #2
Antiguo 17 de octubre de 2022, 19:59
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Hola @Josber, prueba con la libreria de este link Labs/advapi32.lib at master · Aekras1a/Labs · GitHub , por que me pasaba algo parecido con la libreria winspool me daba el mismo error que a vos al compilar y @Kuk me paso un link donde hay varias librerias y funciono bien

Saludos...
fastpho is offline   Responder Con Cita
  #3
Antiguo 17 de octubre de 2022, 20:19
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Gracias @fastpho, he descargado esa librería y, aunque es un poco más grande que la mía (60k), sigue dando el mismo error
Josber is offline   Responder Con Cita
  #4
Antiguo 17 de octubre de 2022, 20:26
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

@Josber, Podrias poner unas lineas de codigo para ver como llamas a la libreria


Saludos...
fastpho is offline   Responder Con Cita
  #5
Antiguo 17 de octubre de 2022, 20:35
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Sí claro @fastpho, sin problemas


Código COBOL:
  1. *
  2.  01  hkcu           PIC xxxx    VALUE x"01000080".
  3.  01  currentuser redefines hkcu   PIC s9(9)   COMP-5.
  4.  01  keyall             PIC xxxx    VALUE x"3F000000".
  5.  01  allaccess REDEFINES keyall     PIC s9(9)   COMP-5.
  6.  
  7.  01  keywrite           pic xxxx    value x"00020006".
  8.  01  kwrite    REDEFINES keywrite PIC s9(9)   comp-5.
  9.  
  10.  01  reg-sz             PIC s9(9)   COMP-5.
  11.  01  handle             PIC s9(9)   COMP-5 VALUE 0. *> receives handle to the registry key
  12.  01  len                PIC s9(9)   COMP-5 VALUE 0.
  13.  01  res                PIC s9(9)   COMP-5 VALUE 0. *> Resultado de la operación
  14.  01  SEC_ATTRIB         PIC S9(9)   COMP-5 VALUE 0. *> Descriptor de seguridad por defecto (0)
  15.  01  NEW_OR_USED            PIC S9(9)   COMP-5.     *> receives flag for if the key was created or opened
  16.  01  POW-ARG-KEY            PIC X(8192) VALUE SPACES.
  17.  01  POW-ARG-NAME       PIC X(8192) VALUE SPACES.
  18.  01  POW-ARG-VALUE      PIC X(8192).

Código COBOL:
  1.      CALL "RegCreateKeyExA" WITH stdcall LINKAGE
  2.           USING BY VALUE     handle
  3.                 BY VALUE     SEC_ATTRIB
  4.                 BY REFERENCE POW-ARG-KEY
  5.                 BY VALUE     NEW_OR_USED
  6.                 BY REFERENCE POW-ARG-NAME
  7.          RETURNING res
  8.      END-CALL.

Si falta algo, me lo dices
Mil gracias
Josber is offline   Responder Con Cita
  #6
Antiguo 17 de octubre de 2022, 20:36
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Citación del post de fastpho Ver Mensaje
@Josber, Podrias poner unas lineas de codigo para ver como llamas a la libreria


Saludos...
Ejemplo de codigo en visual basic : vb6-winapi/registry.bas at master · mmcguill/vb6-winapi · GitHub
fastpho is offline   Responder Con Cita
  #7
Antiguo 17 de octubre de 2022, 20:42
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Josber, compañero le estás pasando 5 parámetros, pero es que esta función espera 8 y no 5: RegCreateKeyExA function (winreg.h) - Win32 apps | Microsoft Learn

De ahí lo de _RegCreateKeyExA@20. Son 4 bytes por parámetro, sea cual sea la propiedad (VALUE, REFERENCE etc.). 4 x 5 = 20

Lo que espera son 8 así que 8 x 4 = 32, si el error fuera _RegCreateKeyExA@32 entonces sí que podríamos pensar que hay algún problema con la librería. Pero mientras que la llamada no lleve cantidad correcta de parámetros, podría ser que tu librería fuera válida también.



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
Kuk is offline   Responder Con Cita
  #8
Antiguo 17 de octubre de 2022, 22:14
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

@Josber, lo compile y no da error , no lo quise correr para no tocar mi registro
Ejemplo
Código COBOL:
  1.  01 HKEY_LOCAL_MACHINE                   PIC XXXX VALUE X"80000002".       *> hKey
  2.  01 H_L_M redefines HKEY_LOCAL_MACHINE   PIC S9(9)   COMP-5.
  3.  01 subkey                               PIC X(8196).                      *> lpSubKey  
  4.  01 Reserved                             PIC S9(9)   COMP-5 VALUE ZERO.    *> Reserved
  5.  01 NULO                                 PIC X.                            *> lpClass
  6.  01 REG_OPTION_NON_VOLATILE              PIC S9(9)   COMP-5 VALUE ZERO.    *> dwOptions
  7.  01 KEY_ALL_ACCESS                       PIC S9(9)   COMP-5 VALUE 983103.  *> samDesired    HEX F003F
  8.  01 lpSecurityAttributes                 PIC S9(9)   COMP-5 VALUE ZERO.    *> lpSecurityAttributes
  9.  01 hregkey                              PIC S9(9)   COMP-5.               *> phkResult
  10.  01 neworused                            PIC S9(9)   COMP-5.               *> lpdwDisposition recibe 1 La clave no existía y fue creada , recive 2 si existía y simplemente se abrió sin cambiarla
  11.  01 retval                               PIC S9(9)   COMP-5.               *> retorno de la func

Código COBOL:
  1.  
  2.      MOVE "SoftwarePruebaSOFT" TO subkey.
  3.      MOVE SPACES TO NULO
  4.      CALL "RegCreateKeyExA" WITH stdcall LINKAGE
  5.           USING BY REFERENCE     HKEY_LOCAL_MACHINE
  6.                 BY REFERENCE     subkey
  7.                 BY VALUE         Reserved
  8.                 BY VALUE         NULO                              
  9.                 BY VALUE         REG_OPTION_NON_VOLATILE
  10.                 BY VALUE         KEY_ALL_ACCESS
  11.                 BY VALUE         lpSecurityAttributes
  12.                 BY REFERENCE     hregkey
  13.                 BY REFERENCE     neworused
  14.          RETURNING retval
  15.      END-CALL.
  16.      DISPLAY "Resultado: " , RETVAL.
  17.      DISPLAY "neworused" ,  neworused.
Saludos ...
fastpho is offline   Responder Con Cita
  #9
Antiguo 18 de octubre de 2022, 08:44
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Muchas gracias @fastpho, voy a probarlo y te digo algo.

Estuve mirando el primer ejemplo que "pillé" en Vb, y en ese ejemplo. sólo le pasaba esos parámetros, no se me ocurrió mirar más ejemplos, si es que algunas veces, tengo errores de novato, pero, lo dicho, compruebo y digo algo

Un salu2.-
Josber is offline   Responder Con Cita
  #10
Antiguo 18 de octubre de 2022, 15:05
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Citación del post de Josber Ver Mensaje
Muchas gracias @fastpho, voy a probarlo y te digo algo.

Estuve mirando el primer ejemplo que "pillé" en Vb, y en ese ejemplo. sólo le pasaba esos parámetros, no se me ocurrió mirar más ejemplos, si es que algunas veces, tengo errores de novato, pero, lo dicho, compruebo y digo algo

Un salu2.-
Seguramente fuera un ejemplo para Windows 95 o algo así

Siempre verifica en la página de MS. Normalmente el Nº de parámetros no suele cambiar, pero hay casos que sí



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
Kuk is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:08.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.