Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Saber qué formulario está activo en todo momento (https://www.cobolforo.es/showthread.php?t=1066)

Nitzer 29 de enero de 2020 16:48

Saber qué formulario está activo en todo momento
 
Hola, una cuestión que me ha surgido y en principio pensaba que era simple, pero no doy con la tecla. Os explico:

En mi aplicación todas las ventas que dependen de ella se abren como OpenForm, de esa manera el usuario puede interactuar a la vez con todas los programas que quiera, bueno pues si quiero saber cual es la que tiene activa, es decir en la que está trabajando en cada momento, NO SE COMO HACERLO :))

Lo del mouse no me vale, porque el formulario siempre está lleno de controles y nunca se ve propiamente, lo he probado y nada.
Pensaba que tenía un evento que se llamase Active, pero para mi desgracia no he encontrado nada.

Si sabéis algo os lo agradezco. Gracias

Kuk 29 de enero de 2020 21:48

1 Archivos Adjunto(s)
Nitzer, he aquí la solución ;)

Un Timer + GetActiveWindow function (winuser.h) - Win32 apps | Microsoft Docs + un poco de Cobol puro :yess:

Joseg 29 de enero de 2020 22:39

1 Archivos Adjunto(s)
Cita:

Citación del post de Nitzer (Mensaje 5240)
Hola, una cuestión que me ha surgido y en principio pensaba que era simple, pero no doy con la tecla. Os explico:

En mi aplicación todas las ventas que dependen de ella se abren como OpenForm, de esa manera el usuario puede interactuar a la vez con todas los programas que quiera, bueno pues si quiero saber cual es la que tiene activa, es decir en la que está trabajando en cada momento, NO SE COMO HACERLO :))

Lo del mouse no me vale, porque el formulario siempre está lleno de controles y nunca se ve propiamente, lo he probado y nada.
Pensaba que tenía un evento que se llamase Active, pero para mi desgracia no he encontrado nada.

Si sabéis algo os lo agradezco. Gracias

Com esta API da para ver qualquer programa que possa estar ativo.

Kuk 30 de enero de 2020 12:30

Joseg, la única pega de tu solución es que utilizando FindWindowA te busca toda ventana abierta en Windows. Sin embargo GetActiveWindow te las busca en tu proceso:

Cita:

Citación del post de docs.microsoft.com
Retrieves the window handle to the active window attached to the calling thread's message queue


Nitzer 30 de enero de 2020 13:23

me iba a adelantar con la respuesta sin probar a fondo de lo kuk. Voy a examinarlo bien.

Kuk 30 de enero de 2020 21:20

Nitzer, si tienes dudas ya sabes ;)

Joseg 31 de enero de 2020 10:17

Cita:

Citación del post de Kuk (Mensaje 5243)
Joseg, la única pega de tu solución es que utilizando FindWindowA te busca toda ventana abierta en Windows. Sin embargo GetActiveWindow te las busca en tu proceso:

Sim, é verdade.

Kuk 31 de enero de 2020 11:48

Joseg, tu solución estámuy bien si en tu aplicación quieres saber si el usuario está con otra cosa incluso fuera de tu aplicación ;)

Nitzer 31 de enero de 2020 16:24

Bueno, muchas gracias kuk por tu aportación. Pero he querido ir un poco mas allá, quería que el usuario pudiera hacer una captura del trozo de pantalla que deseara y al final lo he conseguido con un programita :)
He realizado un video para que veáis lo que quería conseguir

Video de Captura de pantalla

PD: el programita se llama boxcutter y solo con el ejecutable funciona.


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

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