LOCK THE KEYBOARD AND MOUSE

You can share your experience with HMG. Share with some screenshots/project details so that others will also be benefited.

Moderator: Rathinagiri

User avatar
srvet_claudio
Posts: 1911
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Has thanked: 25 times
Been thanked: 92 times
Contact:

LOCK THE KEYBOARD AND MOUSE

Post by srvet_claudio » Sun Mar 28, 2010 5:32 am

A pedido de uno de los participantes del foro (Jas_sierra), acá les dejo un par de comandos que permiten bloquear la acción del mouse y del teclado en una determinada ventana.
Espero que les sirva para algo :?:
Saludos a todos,
Claudio Soto.


SINTAXIS:

KBD_MOUSE IN WINDOW <cWindowName> LOCK // BLOQUEA el teclado y el mouse en la ventana <cWindowName>

KBD_MOUSE IN WINDOW <cWindowName> UNLOCK // DESBLOQUEA el teclado y el mouse en la ventana <cWindowName>

IS_ENABLE_KBD_MOUSE (<cWindowName>) // Retorna .T. si esta BLOQUEADO ---- Retorna .F. si esta DESBLOQUEADO


Code: Select all

****************************************************************************
* PROGRAMA: LOCK THE KEYBOARD AND MOUSE
* LENGUAJE: HARBOUR-MINIGUI 3.0.26
* FECHA:    28 MARZO 2010
* AUTOR:    CLAUDIO SOTO
* PAIS:     URUGUAY
* E-MAIL:   srvet@adinet.com.uy
****************************************************************************


***************************************************************************************************
* SINTAXIS:
*
* KBD_MOUSE IN WINDOW <cWindowName> LOCK    // BLOQUEA EL TECLADO Y EL MOUSE EN LA VENTANA <cWindowName>
*
* KBD_MOUSE IN WINDOW <cWindowName> UNLOCK  // DESBLOQUEA EL TECLADO Y EL MOUSE EN LA VENTANA <cWindowName>
*
* IS_ENABLE_KBD_MOUSE (<cWindowName>)       // Retorna .T. si esta BLOQUEADO
*                                           // Retorna .F. si esta DESBLOQUEADO
*******************************************************************************************************


****************************************************************************************************
* DEFINICION DE LOS COMANDOS
****************************************************************************************************
#xcommand KBD_MOUSE IN WINDOW <cWindowName> LOCK;
           =>;
          LOCK_KBD_MOUSE (GetFormHandle(<cWindowName>), 0)   // BLOQUEA

#xcommand KBD_MOUSE IN WINDOW <cWindowName> UNLOCK;
           =>;
          LOCK_KBD_MOUSE (GetFormHandle(<cWindowName>), 1)   // DESBLOQUEA

#xtranslate IS_ENABLE_KBD_MOUSE (<cWindowName>);
           =>;
          ENABLE_KBD_MOUSE (GetFormHandle(<cWindowName>))   

******************************************************************************************************


#include "minigui.ch"

Function Main
PRIVATE inicio

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 400 ;
		HEIGHT 500 ;
		TITLE 'Bloqueo de teclado y mouse' ;
		MAIN 
     
        @ 10 , 10 LABEL Label_1
		@ 50 , 10 LABEL Label_2 AUTOSIZE 
		
        @ 100, 100 BUTTON boton_1 CAPTION "Mensage" ACTION MsgInfo ("Hola usuario")
        @ 100, 250 BUTTON boton_2 CAPTION "Bloquear" ACTION bloquear ()
		
		@ 300 , 10 EDITBOX EB_1 WIDTH 200 HEIGHT 100 VALUE "Escribir" BACKCOLOR WHITE FONTCOLOR BLUE

		Form_1.Label_2.Value := "Teclado y Mouse: "+IF (IS_ENABLE_KBD_MOUSE ("Form_1") = .F. ,"BLOQUEADO","DESBLOQUEADO")
		
	END WINDOW

	Form_1.Center 

	Form_1.Activate 

Return


*********************************************************************************************************************
Procedure BLOQUEAR
    
    MsgInfo ("El teclado y el mouse de esta ventana seran bloquedos por 30 segundos")
    
    inicio := SECONDS ()
    
    KBD_MOUSE IN WINDOW "Form_1" LOCK    // BLOQUEADO
    
    Form_1.Label_2.Value := "Teclado y Mouse: "+IF (IS_ENABLE_KBD_MOUSE ("Form_1") = .F. ,"BLOQUEADO","DESBLOQUEADO")

    DEFINE TIMER timer_1 OF Form_1 INTERVAL 30000 action DESBLOQUEAR ()
    DEFINE TIMER timer_2 OF Form_1 INTERVAL 100   action Form_1.Label_1.Value := str (SECONDS () - inicio)+" seg."
    
Return

***********************************************************************************************************************
Procedure DESBLOQUEAR

     KBD_MOUSE IN WINDOW "Form_1" UNLOCK    // DESBLOQUEADO
     
     Form_1.Label_2.Value := "Teclado y Mouse: "+IF (IS_ENABLE_KBD_MOUSE ("Form_1") = .F. ,"BLOQUEADO","DESBLOQUEADO")
 
     form_1.timer_1.release
     form_1.timer_2.release
     MsgInfo ("El teclado y el mouse han sido desbloqueados")
     
Return



*#########################################################################################################################
*   FUNCIONES EN C        
*#########################################################################################################################

#pragma begindump

#include <shlobj.h>   
#include <winuser.h>
#include <windows.h>

#include "hbapi.h"

//*********************************************************************************
// Bloquea el teclado y el mouse de una determinada ventana
// LOCK_KBD_MOUSE (hWnd, bEnable) 
// bEnable = FALSE (bloquea),  bEnable = TRUE (activa)

HB_FUNC (LOCK_KBD_MOUSE)
{   
    EnableWindow( (HWND) hb_parnl (1), (BOOL) hb_parni (2));
} 

//**********************************************************************************
// Retorna =  0   si el teclado y el mouse estan bloqueados
// Retorna <> 0   si el teclado y el mouse estan desbloqueados
// LOCK_KBD_MOUSE (hWnd, bEnable) 

HB_FUNC (ENABLE_KBD_MOUSE)
{  
  hb_retl((int) IsWindowEnabled((HWND) hb_parnl (1)));
} 
 
#pragma enddump

Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com

User avatar
Rathinagiri
Posts: 5077
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Has thanked: 89 times
Been thanked: 103 times
Contact:

Post by Rathinagiri » Sun Mar 28, 2010 6:09 am

Thanks Claudio Soto.

Nice contribution.
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.

User avatar
Vanguarda
Posts: 543
Joined: Wed Feb 11, 2009 10:56 am
Location: Americana - SP
Contact:

Post by Vanguarda » Sun Mar 28, 2010 2:37 pm

Hi friends,

Very useful, thanks for share.

Regards,
--
Paulo Sérgio Durço (Vanguarda)


http://hmglights.wordpress.com/

User avatar
srvet_claudio
Posts: 1911
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Has thanked: 25 times
Been thanked: 92 times
Contact:

Post by srvet_claudio » Sun Mar 28, 2010 5:31 pm

Thanks Rathinagiri and Vanguarda.
Best regards,
Claudio
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com

User avatar
jas_sierra
Posts: 12
Joined: Sat Aug 23, 2008 2:13 pm

Post by jas_sierra » Mon Mar 29, 2010 3:05 pm

Muchas gracias por tu aporte, es muy util para un proyecto que tengo pendiente,

User avatar
fchirico
Posts: 324
Joined: Sat Aug 23, 2008 11:27 pm
Location: Argentina

Post by fchirico » Mon Mar 29, 2010 3:24 pm

srvet_claudio wrote:A pedido de uno de los participantes del foro (Jas_sierra), acá les dejo un par de comandos que permiten bloquear la acción del mouse y del teclado en una determinada ventana.
Espero que les sirva para algo :?:
Saludos a todos,
Claudio Soto.
Claudio, son necesarios estos archivos al momento de compilar?

#include <shlobj.h>
#include <winuser.h>
#include <windows.h>

#include "hbapi.h"

si son necesarios, dónde los puedo obtener?

Gracias!
Saludos, Fernando Chirico.

User avatar
srvet_claudio
Posts: 1911
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Has thanked: 25 times
Been thanked: 92 times
Contact:

Post by srvet_claudio » Tue Mar 30, 2010 12:56 am

Hola Fchirico.
fchirico wrote: Claudio, son necesarios estos archivos al momento de compilar?

#include <shlobj.h>
#include <winuser.h>
#include <windows.h>

#include "hbapi.h"

si son necesarios, dónde los puedo obtener?
Estos son archivos de cabecera, en estos archivos están los prototipos o declaraciones de las funciones, así como también macros, definiciones de tipos,etc.
Son necesarios para indicarle al compilador de C que funciones va a utilizar nuestro código y así poderlas enlazar con la librería adecuada.


Los archivos encerrados entre <>, ej. #include <winuser.h>
contienen las cabeceras de funciones del lenguaje C.
están en:
C:\hmg.3.0.26\MINGW\include

Los archivos encerrados entre "", ej. #include "hbapi.h"
contienen las cabeceras en C de las funciones de Harbour
están en:
C:\hmg.3.0.26\HARBOUR\include


Saludos,
Claudio Soto
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com

User avatar
fchirico
Posts: 324
Joined: Sat Aug 23, 2008 11:27 pm
Location: Argentina

Post by fchirico » Tue Mar 30, 2010 11:38 am

srvet_claudio wrote:Hola Fchirico.
......

Los archivos encerrados entre <>, ej. #include <winuser.h>
contienen las cabeceras de funciones del lenguaje C.
están en:
C:\hmg.3.0.26\MINGW\include

Los archivos encerrados entre "", ej. #include "hbapi.h"
contienen las cabeceras en C de las funciones de Harbour
están en:
C:\hmg.3.0.26\HARBOUR\include


Saludos,
Claudio Soto

Gracias Claudio, excelente aporte!
Saludos, Fernando Chirico.

User avatar
Roberto Lopez
HMG Founder
Posts: 3876
Joined: Wed Jul 30, 2008 6:43 pm
Has thanked: 12 times
Been thanked: 105 times

Post by Roberto Lopez » Tue Mar 30, 2010 1:20 pm

rathinagiri wrote:Thanks Claudio Soto.

Nice contribution.
There is various nice contributions (as Claudio's one) spread along the forum.

Could be good to reunite such things in a new library or even in HFCL, to be distributed at the site.
Regards/Saludos,

Roberto


(Veritas Filia Temporis)

User avatar
srvet_claudio
Posts: 1911
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Has thanked: 25 times
Been thanked: 92 times
Contact:

Post by srvet_claudio » Tue Mar 30, 2010 3:34 pm

Roberto Lopez wrote: There is various nice contributions (as Claudio's one) spread along the forum.

Could be good to reunite such things in a new library or even in HFCL, to be distributed at the site.
En lo que a mi respecta muchas gracias Roberto por tus palabras, estoy de a cuerdo con vos que a lo largo del foro hay gran cantidad de muy buenas contribuciones de mucha gente, me parece una muy buena idea agruparlas y distribuirlas.

En cuanto a las contribuciones que he posteado, si alguna te pareció interesante y crees conveniente hacerle alguna mejora, modificación, cambio de sintaxis, etc... para hacerlas mas funcional a HMG te aliento a que lo hagas.

Un saludo cordial,
Claudio Soto.
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest