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
[Sintaxis] Uso de API REST Micro Focus faberquin Micro Focus COBOL 1 28 de enero de 2022 20:48
[Duda] api de Windows jjcol Fujitsu COBOL 1 29 de julio de 2021 00:44
[Duda] Como consumir desde Acucobol un Api-rest MarcosMamani AcuCobol 3 6 de abril de 2021 14:20
[Componente] API REST en Acucobol GAbo248 AcuCobol 5 10 de diciembre de 2019 01:47

Respuesta
 
Herramientas

  #1
Antiguo 22 de diciembre de 2015, 17:15
Recato53
Patrocinador del Foro
Última Actividad 19.07.2025 12:10
Posts Posts: 79
Likes enviados Enviados: 72
Likes recibidos Recibidos: 11
Vacaciones API - SetForegroundWindow
0 Inactivo Inactivo

Estoy intentando programar una API de Windows 'SetForegroundWindow'.

Algo estoy haciendo mal, no consigo que active una Ventana que se queda en la Barra de Herramientas.

Empleo el siguiente código en PowerCobol 9.
Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.     01  S-INDEX      PIC S9(9) COMP-5 VALUE 0.
  3.     01  WINDOWCLASSE BINARY-LONG VALUE ZERO.
  4.     01  HWND         BINARY-LONG.
  5.  
  6.   01 WINDOWNAME    PIC X(60).
  7.  
  8.  PROCEDURE DIVISION.
  9.  
  10.       MOVE "FR-UTIL" TO WINDOWNAME.
  11.  
  12.         COMPUTE S-INDEX = FUNCTION STORED-CHAR-LENGTH(WINDOWNAME).
  13.         ADD 1 TO S-INDEX.
  14.         MOVE X"00"        TO WINDOWNAME(S-INDEX:1).
  15.              
  16. *************************************************************************
  17.  
  18.       CALL "FindWindowA" WITH STDCALL USING
  19.                               BY VALUE WINDOWCLASSE
  20.                               BY REFERENCE WINDOWNAME
  21.                               RETURNING HWND.
  22.  
  23. *************************************************************************      
  24.       CALL "SetForegroundWindow" WITH STDCALL USING
  25.                                       BY VALUE HWND.
  26.      
  27.         EXIT PROGRAM.

La variable WINDOWNAME es el formulario que quiero activar.

En las propiedades del script estoy añadiendo la siguiente opción: ALPHAL(WORD)
Recato53 is offline   Responder Con Cita
  #2
Antiguo 23 de diciembre de 2015, 00:05
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224

Recato53,

O nome da Window é exactamente o que aparece na barra superior.
Se vires a imagem é:

"FCCID.io-2368817.pdf - Adobe Acrobat Reader DC"

(tens que inclui o nome todo - incluindo espaços)

Se souberes o nome exato da classe é mais fácil pois o nome da classe é sempre igual:
Por exemplo: um documento de WORD tem a ClassName: OpusApp (Depende da versão Office)
uma folha de Excel tem a ClassName: XLMAIN ( depende da versão de Office)
um documento de PDF tem a ClassName: AcrobatSDIWindow (também depende da versão do Acrobat Reader)

Se pretenderes usar a ClassName tens que alterar a Working-Storage, para defenir que vais passar por ClasseName e não por Form Name

Saludos e FELIZ NAVIDAD

Rui Pinto

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  Image2.jpg
Vistas: 264
Tamaño:  20,6 KB  
Rapinto is offline   Responder Con Cita
  #3
Antiguo 23 de diciembre de 2015, 09:39
Recato53
Patrocinador del Foro
Última Actividad 19.07.2025 12:10
Posts Posts: 79
Likes enviados Enviados: 72
Likes recibidos Recibidos: 11

Citación del post de Rapinto Ver Mensaje
Recato53,

O nome da Window é exactamente o que aparece na barra superior.
Se vires a imagem é:

"FCCID.io-2368817.pdf - Adobe Acrobat Reader DC"

(tens que inclui o nome todo - incluindo espaços)

Se souberes o nome exato da classe é mais fácil pois o nome da classe é sempre igual:
Por exemplo: um documento de WORD tem a ClassName: OpusApp (Depende da versão Office)
uma folha de Excel tem a ClassName: XLMAIN ( depende da versão de Office)
um documento de PDF tem a ClassName: AcrobatSDIWindow (também depende da versão do Acrobat Reader)

Se pretenderes usar a ClassName tens que alterar a Working-Storage, para defenir que vais passar por ClasseName e não por Form Name

Saludos e FELIZ NAVIDAD

Rui Pinto
Pretendo activar un Formulario de Powercobol, que después de un proceso, se queda en la Barra de Herramientas.
¿Como consigo levantar este FORM?.

¡¡¡¡FELIZ NAVIDAD!!!!
Recato53 is offline   Responder Con Cita
  #4
Antiguo 23 de diciembre de 2015, 12:14
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224

Recato53,

Experimentei este código e funcionou bem.
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  PROCEDURE       DIVISION.
  5. * Minimize current form
  6.     INVOKE POW-SELF "ShowForm" USING POW-SWMINIMIZED.  
  7. * Call another form with no return
  8.     INVOKE pow-self "CallForm" USING "CfForm1".  
  9. *
  10. *   Open normal the minimized form
  11.     INVOKE POW-SELF "ShowForm" USING POW-SWNORMAL.

Não sei se isto resolve o teu problema.

Un saludo e Feliz Navidad
Rui Pinto
Rapinto is offline   Responder Con Cita
  #5
Antiguo 26 de diciembre de 2015, 13:30
Recato53
Patrocinador del Foro
Última Actividad 19.07.2025 12:10
Posts Posts: 79
Likes enviados Enviados: 72
Likes recibidos Recibidos: 11

No consigo hacer funcionar las distintas opciones que me proponeis, se sigue quedando el formulario que llama a un proceso en la barra de herramientas.

He partido de una rutina que tienes en POWER+API en la cocina del Foro:
Bring Window to Top (By "Name).

Un saludo. Feliz NAVIDAD.
Recato53 is offline   Responder Con Cita
  #6
Antiguo 27 de diciembre de 2015, 22:49
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224

Recato53,

Manda-me um exemplo por Email (ou Mensagem Privada) , para ver se consigo perceber o teu problema.

Não consigo obter a situação que descreves.

Saludos,
Rui
Rapinto is offline   Responder Con Cita
  #7
Antiguo 30 de julio de 2021, 21:51
jjcol
Forero Junior
Última Actividad 17.06.2022 15:28
Posts Posts: 25
Likes enviados Enviados: 14
Likes recibidos Recibidos: 1

Buenas tardes saben de alguna api, para dejar columnas estáticas
jjcol is offline   Responder Con Cita
  #8
Antiguo 30 de julio de 2021, 23:33
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@jjcol, a qué columnas te refieres, a las de ListView?



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
  #9
Antiguo 31 de julio de 2021, 00:29
jjcol
Forero Junior
Última Actividad 17.06.2022 15:28
Posts Posts: 25
Likes enviados Enviados: 14
Likes recibidos Recibidos: 1

Citación del post de Kuk Ver Mensaje
@jjcol, a qué columnas te refieres, a las de ListView?
si ListView es le que estoy utilizando, power cobol 9
jjcol is offline   Responder Con Cita
  #10
Antiguo 31 de julio de 2021, 10:04
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 jjcol Ver Mensaje
para dejar columnas estáticas
Código COBOL:
  1.  IDENTIFICATION DIVISION.
  2.  PROGRAM-ID. VISTA-EXTENDIDA.
  3. **************************************************
  4. * RUTINA PARA OPCIONES EXTENDIDAS EN EL LISTVIEW *
  5. **************************************************
  6.  ENVIRONMENT DIVISION.
  7.  CONFIGURATION SECTION.
  8.  SPECIAL-NAMES.
  9.      DECIMAL-POINT IS COMMA.
  10.  INPUT-OUTPUT SECTION.
  11.  DATA DIVISION.
  12.  WORKING-STORAGE SECTION.
  13. *MOVE "HWND" OF NOMBRE-CONTROL TO WS-HANDLE
  14.  01  WS-LINEA-ENTERA              PIC S9(9) COMP-5 VALUE 32.
  15.  01  WS-LINK                      PIC S9(9) COMP-5.
  16.  01  WS-GRID                      PIC S9(9) COMP-5 value 01.
  17.  01  WS-DRAG                      PIC S9(9) COMP-5 VALUE 16.
  18.  01  LVM-SETEXTENDEDLISTVIEWSTYLE PIC S9(9) COMP-5 VALUE 4150.
  19.  01  LVS-EX-FULLROWSELECT         PIC S9(9) COMP-5 VALUE 32.
  20.  01  LVS-EX-HEADERDRAGDROP        PIC S9(9) COMP-5 VALUE 16.
  21.  01  LVS-EX-GRIDLINES             PIC S9(9) COMP-5 VALUE 01.
  22.  01  LVS-EX-FLATSB                PIC S9(9) COMP-5 VALUE 256.
  23.  01  LVS-NOSORTHEADER             PIC S9(9) COMP-5 VALUE h"8000".
  24.  01  LV-STYLE                     PIC S9(9) COMP-5.
  25.  01  LVM_GETHEADER    PIC S9(9) COMP-5 VALUE h"101F".
  26.  01  RESP             PIC S9(9) COMP-5.
  27.  LINKAGE SECTION.
  28.  01  WS-HANDLE                    PIC S9(9) COMP-5.
  29.  
  30.  PROCEDURE DIVISION USING WS-HANDLE.
  31. **********************************************
  32. **** HABILITA LINEA ENTERA EN EL LISTVIEW ****
  33. **********************************************
  34.      CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  35.                                             BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
  36.                                             BY VALUE LVS-EX-FULLROWSELECT
  37.                                             BY VALUE WS-LINEA-ENTERA
  38.    
  39. ****************************************************
  40. **** HABILITA CAMBIO DE COLUMNAS EN EL LISTVIEW ****
  41. ****************************************************
  42.      CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  43.                                             BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
  44.                                             BY VALUE LVS-EX-HEADERDRAGDROP
  45.                                             BY VALUE WS-DRAG
  46.    
  47. *****************************************************
  48. **** HABILITA APARIENCIA DE TABLA EN EL LISTVIEW ****
  49. *****************************************************
  50.      CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  51.                                             BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
  52.                                             BY VALUE LVS-EX-GRIDLINES
  53.                                             BY VALUE WS-GRID
  54.    
  55. *****************************************************
  56. **** HABILITA FLAT SCROLLBARS                    ****
  57. *****************************************************
  58.      CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  59.                                             BY VALUE LVM-SETEXTENDEDLISTVIEWSTYLE
  60.                                             BY VALUE LVS-EX-FLATSB
  61.                                             BY VALUE -1
  62.    
  63. *****************************************************
  64. **** DESHABILITA CABECERA                        ****
  65. *****************************************************
  66.      CALL "SendMessageA" WITH STDCALL USING BY VALUE WS-HANDLE
  67.                                             BY VALUE LVM_GETHEADER
  68.                                             BY VALUE 0
  69.                                             BY VALUE 0
  70.                                             RETURNING RESP    
  71.                                            
  72.      CALL "EnableWindow" WITH STDCALL USING BY VALUE RESP
  73.                                             BY VALUE 0
  74.                                            
  75. *****************************************************
  76. **** DESHABILITA BOTONES                         ****
  77. *****************************************************
  78.       CALL "GetWindowLongA" WITH STDCALL USING BY VALUE WS-HANDLE      
  79.                                                BY VALUE -16
  80.                                                RETURNING LV-STYLE                                               .
  81.      
  82.       ADD LVS-NOSORTHEADER TO LV-STYLE
  83.      
  84.       CALL "SetWindowLongA" WITH STDCALL USING BY VALUE WS-HANDLE
  85.                                                BY VALUE -16
  86.                                                BY VALUE LV-STYLE
  87.       .

No te aolvides de añadir la opción ALPHAL(WORD)



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:03.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.