Hi,
How can I lock the keyboard before a Syswait() and release it again after?
Thanks in advance.
BlockInput(.T.)
BlockInput(.F.)
DLL32 STATIC FUNCTION BlockInput( lTrava AS BOOL ) AS BOOL LIB "User32.DLL"
TRAVATEC(.T.) // TRAVA O TECLADO
TRAVATEC(.F.) // LIBERA O TECLADO
#pragma begindump
#include "windows.h"
#include "winable.h"
#include "hbapi.h"
HB_FUNC( TRAVATEC )
{
BlockInput( hb_parl(1) );
}
#pragma enddump
karinha wrote:or
- Code: Select all Expand view RUN
TRAVATEC(.T.) // TRAVA O TECLADO
TRAVATEC(.F.) // LIBERA O TECLADO
#pragma begindump
#include "windows.h"
#include "winable.h"
#include "hbapi.h"
HB_FUNC( TRAVATEC )
{
BlockInput( hb_parl(1) );
}
#pragma enddump
Regards, saludos.
TRAVATEC(.T.) // TRAVA O TECLADO
TRAVATEC(.F.) // LIBERA O TECLADO
#pragma begindump
#include "windows.h"
#include "winable.h"
#include "winuser.h" // new
#include "hbapi.h"
HB_FUNC( TRAVATEC )
{
BlockInput( hb_parl(1) );
}
#pragma enddump
Manuel Mercado gentilmente(in memory)
#Include "FiveWin.Ch"
#Include "Dll.Ch"
Function Teclado() //Main()
/*
MsgStop( StartButton( .F. ), "Desabilitando o botão Start(Iniciar) - Win 9x, NT, 2K, XP" )
MsgStop( StartButton( .T. ), "Habilitando o botão Start(Iniciar) - Win 9x, NT, 2K, XP" )
MsgStop( ShowDesktop( .F. ), "Desabilitando o Desktop - Win 9x, NT, 2K, XP" )
MsgStop( DesktopProc( "MyDesktop2", "Calc.exe" ), "Executando uma tarefa em outro desktop - Win NT, 2K, XP" )
MsgStop( ShowDesktop( .T. ), "Habilitando o Desktop - Win 9x, NT, 2K, XP" )
MsgStop( ShowTaskbar( .F. ), "Desabilitando o Taskbar(Barra de Tarefas) - Win 9x, NT, 2K, XP" )
MsgStop( ShowTaskbar( .T. ), "Habilitando o Taskbar(Barra de Tarefas) - Win 9x, NT, 2K, XP" )
MsgStop( ShowClock( .F. ), "Desabilitando o Clock(Relogio) - Win 9x, NT, 2K, XP" )
MsgStop( ShowClock( .T. ), "Habilitando o Clock(Relogio) - Win 9x, NT, 2K, XP" )
MsgStop( AltTabEnable( 0, .F. ), "Desabilitando ALT+TAB e ALT+ESC - Windows NT, 2k" )
MsgStop( AltTabEnable( 0, .T. ), "Habilitando ALT+TAB e ALT+ESC - Windows NT, 2k" )
// Para Windows XP/NT e 2000 / 2003
IF IsWinNT() .OR. IsWin2000() //??? Nao testei em 2000/2003
MsgStop( CtrlAltDel( .F. ), "Desabilitando o Ctrl+Alt+Del - Windows NT, 2k" )
MsgStop( CtrlAltDel( .T. ), "Habilitando o Ctrl+Alt+Del - Windows NT, 2k" )
ELSE //-> Windows 95/98 - Millenium Edition
Ctrl_Alt_Del( .f. )
MsgAlert( "CTRL+ALT+DEL DESLIGADO" + CRLF + "Please, press CTRL + ALT + DEL", "Desligado" )
Ctrl_Alt_Del( .t. )
MsgAlert( "CTRL+ALT+DEL LIGADO" + CRLF + "Please, press CTRL + ALT + DEL", "Ligado" )
ENDIF
*/
Return Nil
//
//-> Comentario: Simplesmente, FANTASTICO!!!
//
//-> Complementando para Windows 95/98 Milleniun Edition
//
// Antonio Carlos Pantaglione
// Toninho@fwi.com.br
// Agosto/2001
//
//#include "fivewin.ch"
//#include "dll.ch"
//----------------------------------------------------------------------------//
//-> Modifiquei para nao ter choque com a funcao par o Windows NT(XP)
Function Ctrl_Alt_Del( lState )
if !lState
SysParInfo( 97, 1, 0, 0 )
else
SysParInfo( 97, 0, 0, 0 )
endif
return Nil
//----------------------------------------------------------------------------//
dll32 static function SysParInfo( uAction AS LONG, uParam AS LONG, vParam AS LONG, uWinIni AS LONG ) ;
AS LONG PASCAL FROM "SystemParametersInfoA" LIB "User32.dll"
//----------------------------------------------------------------------------//
//-> Rotina em C -> By Manuel Mercado - The Best
#pragma BEGINDUMP
#include <windows.h>
#include <stdlib.h>
#include <hbapi.h>
#define ID_STARTBUTTON 0x130 // Start button ID
#define ID_TRAY 0x12F // System tray ID
#define ID_CLOCK 0x12F // System clock ID
#define PROGRAM_MANAGER "Program Manager" // Program manager window name
#define TASKBAR "Shell_TrayWnd" // Taskbar class name
int WINAPI TaskManager_Enable_Disable( BOOL ) ;
int WINAPI StartButton_Show_Hide( BOOL ) ;
int WINAPI Desktop_Show_Hide( BOOL ) ;
int WINAPI Process_Desktop(char *, char * ) ;
int WINAPI Taskbar_Show_Hide( BOOL ) ;
int WINAPI Clock_Show_Hide( BOOL ) ;
int WINAPI AltTab_Enable_Disable( HWND, BOOL ) ;
BOOL StartProcess( char *, char * ) ;
LRESULT CALLBACK LowLevelMouseHookProc( int nCode, WORD wParam, DWORD lParam ) ;
LRESULT CALLBACK MouseHookProc( int nCode, WORD wParam, DWORD lParam ) ;
HHOOK hHook ; // Mouse hook
HINSTANCE hInst ; // Instance handle
HB_FUNC( ALTTABENABLE )
{
HWND hWnd = (HWND ) hb_parnl( 1 ) ;
BOOL bEnable = hb_parl( 2 ) ;
int iRet ;
iRet = AltTab_Enable_Disable( hWnd, bEnable ) ;
hb_retni( iRet ) ;
}
HB_FUNC( SHOWCLOCK )
{
BOOL bShow = hb_parl( 1 ) ;
int iRet ;
iRet = Clock_Show_Hide( bShow ) ;
hb_retni( iRet ) ;
}
HB_FUNC( SHOWTASKBAR )
{
BOOL bShow = hb_parl( 1 ) ;
int iRet ;
iRet = Taskbar_Show_Hide( bShow ) ;
hb_retni( iRet ) ;
}
/* // CONTEM ERROS
HB_FUNC( DESKTOPPROC )
{
char* c1 = hb_parc( 1 ) ;
char* c2 = hb_parc( 2 ) ;
int iRet ;
iRet = Process_Desktop( c1, c2 ) ;
hb_retni( iRet ) ;
}
*/
HB_FUNC( SHOWDESKTOP )
{
BOOL bShow = hb_parl( 1 ) ;
int iRet ;
iRet = Desktop_Show_Hide( bShow ) ;
hb_retni( iRet ) ;
}
HB_FUNC( STARTBUTTON )
{
BOOL bShow = hb_parl( 1 ) ;
int iRet ;
iRet = StartButton_Show_Hide( bShow ) ;
hb_retni( iRet ) ;
}
HB_FUNC( CTRLALTDEL )
{
BOOL bEnable = hb_parl( 1 ) ;
int iRet ;
iRet = TaskManager_Enable_Disable( bEnable ) ;
hb_retni( iRet ) ;
}
int WINAPI TaskManager_Enable_Disable(BOOL bEnableDisable)
{
#define KEY_DISABLETASKMGR "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"
#define VAL_DISABLETASKMGR "DisableTaskMgr"
HKEY hKey;
DWORD val;
LONG r;
if (RegOpenKey(HKEY_CURRENT_USER, KEY_DISABLETASKMGR, &hKey) != ERROR_SUCCESS)
if (RegCreateKey(HKEY_CURRENT_USER, KEY_DISABLETASKMGR, &hKey) != ERROR_SUCCESS)
return 0;
if (bEnableDisable) // Enable
{
r = RegDeleteValue(hKey, VAL_DISABLETASKMGR);
}
else // Disable
{
val = 1;
r = RegSetValueEx(hKey, VAL_DISABLETASKMGR, 0, REG_DWORD, (BYTE *)&val, sizeof(val));
}
RegCloseKey(hKey);
return (r == ERROR_SUCCESS ? 1 : 0) ;
}
int WINAPI StartButton_Show_Hide( BOOL bShowHide )
{
HWND hWnd;
hWnd = GetDlgItem( FindWindow( TASKBAR, NULL ), ID_STARTBUTTON ) ;
if ( hWnd == NULL )
return 0 ;
ShowWindow( hWnd, bShowHide ? SW_SHOW : SW_HIDE) ;
UpdateWindow( hWnd );
return 1 ;
}
int WINAPI Taskbar_Show_Hide( BOOL bShowHide )
{
HWND hWnd;
hWnd = FindWindow( TASKBAR, NULL ) ;
if ( hWnd == NULL )
return 0 ;
ShowWindow( hWnd, bShowHide ? SW_SHOW : SW_HIDE ) ;
UpdateWindow(hWnd) ;
return 1 ;
}
int WINAPI Desktop_Show_Hide( BOOL bShowHide )
{
OSVERSIONINFO osvi ;
BOOL bIsWindowsNT4SP3orLater ;
int iServicePack ;
char *p ;
// Determine the current windows version
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO ) ;
GetVersionEx( &osvi );
for (p = osvi.szCSDVersion; *p && ! isdigit( *p ) ; *p++ ) ;
iServicePack = atoi( p ) ;
bIsWindowsNT4SP3orLater = ( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT ) &&
( ( ( osvi.dwMajorVersion == 4 ) && ( iServicePack >= 3 ) ) ||
( osvi.dwMajorVersion > 4 ) ) ;
if ( ! bShowHide )
{
if ( ! hHook )
{
hHook = SetWindowsHookEx( bIsWindowsNT4SP3orLater ? WH_MOUSE_LL : WH_MOUSE,
bIsWindowsNT4SP3orLater ? ( HOOKPROC )LowLevelMouseHookProc : ( HOOKPROC )MouseHookProc,
hInst, 0 ) ;
if ( ! hHook )
return 0 ;
}
}
else
{
UnhookWindowsHookEx(hHook);
hHook = NULL;
}
return SetWindowPos( FindWindow( NULL, PROGRAM_MANAGER ), NULL, 0, 0, 0, 0,
bShowHide ? SWP_SHOWWINDOW : SWP_HIDEWINDOW | SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER);
}
LRESULT CALLBACK LowLevelMouseHookProc( int nCode, WORD wParam, DWORD lParam )
{
PMSLLHOOKSTRUCT p = (PMSLLHOOKSTRUCT)lParam ;
HWND hWnd = WindowFromPoint( p->pt ) ;
if( nCode >= 0 )
{
if ( ( wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN ) && hWnd == GetDesktopWindow() )
{
return 1 ;
}
}
return CallNextHookEx( hHook, nCode, wParam, lParam ) ;
}
LRESULT CALLBACK MouseHookProc( int nCode, WORD wParam, DWORD lParam )
{
if( nCode >= 0 )
{
if ( wParam == WM_LBUTTONDBLCLK )
{
if ( ( ( MOUSEHOOKSTRUCT * )lParam )->hwnd == GetDesktopWindow() )
{
return 1 ;
}
}
}
return CallNextHookEx( hHook, nCode, wParam, lParam ) ;
}
int WINAPI Process_Desktop(char *szDesktopName, char *szPath )
{
HDESK hOriginalThread ;
HDESK hOriginalInput ;
HDESK hNewDesktop ;
// Save original ...
hOriginalThread = GetThreadDesktop( GetCurrentThreadId() ) ;
hOriginalInput = OpenInputDesktop( 0, FALSE, DESKTOP_SWITCHDESKTOP ) ;
// Create a new Desktop and switch to it
hNewDesktop = CreateDesktop( szDesktopName, NULL, NULL, 0, GENERIC_ALL, NULL ) ;
SetThreadDesktop( hNewDesktop ) ;
SwitchDesktop( hNewDesktop ) ;
// Execute process in new desktop
StartProcess( szDesktopName, szPath ) ;
// Restore original ...
SwitchDesktop( hOriginalInput ) ;
SetThreadDesktop( hOriginalThread ) ;
// Close the Desktop
CloseDesktop( hNewDesktop ) ;
return 0 ;
}
BOOL StartProcess( char *szDesktopName, char *szPath )
{
STARTUPINFO si ;
PROCESS_INFORMATION pi ;
// Zero these structs
ZeroMemory( &si, sizeof( si ) ) ;
si.cb = sizeof( si ) ;
si.lpTitle = szDesktopName ;
si.lpDesktop = szDesktopName ;
ZeroMemory( &pi, sizeof( pi ) ) ;
// Start the child process
if (!CreateProcess( NULL, // No module name (use command line).
szPath, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) ) // Pointer to PROCESS_INFORMATION structure.
{
return FALSE ;
}
// Wait until process exits
WaitForSingleObject( pi.hProcess, INFINITE ) ;
// Close process and thread handles
CloseHandle( pi.hProcess ) ;
CloseHandle( pi.hThread ) ;
return TRUE ;
}
int WINAPI Clock_Show_Hide( BOOL bShowHide )
{
HWND hWnd ;
hWnd = GetDlgItem( FindWindow( TASKBAR, NULL ), ID_TRAY ) ;
hWnd = GetDlgItem( hWnd, ID_CLOCK ) ;
if ( hWnd == NULL )
return 0 ;
ShowWindow( hWnd, bShowHide ? SW_SHOW : SW_HIDE ) ;
UpdateWindow( hWnd ) ;
return 1 ;
}
int WINAPI AltTab_Enable_Disable( HWND hWnd, BOOL bEnableDisable )
{
#define m_nHotKeyID 100
if ( ! bEnableDisable )
{
if ( ! RegisterHotKey( hWnd, m_nHotKeyID+0, MOD_ALT, VK_TAB ) ) // Alt+Tab
return 0 ;
if ( ! RegisterHotKey( hWnd, m_nHotKeyID+1, MOD_ALT, VK_ESCAPE ) ) // Alt+Esc
return 0 ;
}
else
{
if ( ! UnregisterHotKey( hWnd, m_nHotKeyID + 0 ) )
return 0 ;
if ( ! UnregisterHotKey( hWnd, m_nHotKeyID + 1 ) )
return 0 ;
}
return 1 ;
}
#pragma ENDDUMP
/*
Saludos
Manuel Mercado
*/
wartiaga wrote:Hi,
How can I lock the keyboard before a Syswait() and release it again after?
Thanks in advance.
Antonio Linares wrote:wartiaga wrote:Hi,
How can I lock the keyboard before a Syswait() and release it again after?
Thanks in advance.
oWndMain:Disable() and oWnd:Enable() later
Antonio Linares wrote:Use:
ACTIVATED DIALOG oDlg VALID .F.
or this way:
ACTIVATED DIALOG oDlg VALID CanTheUserExit()
Return to FiveWin for Harbour/xHarbour
Users browsing this forum: No registered users and 108 guests