> Or, how do I send this key pressing event to the :bKeyDown block of an object ?
#include "Fivewin.ch"
static oDlg
function Main()
DisablePrintScreen()
DEFINE DIALOG oDlg
oDlg:bKeyDown = { | nKey | If( nKey == VK_SNAPSHOT, MsgBeep(),) }
ACTIVATE DIALOG oDlg CENTERED
return nil
function MyHbFunc( nKeyDown )
Eval( oDlg:bKeyDown, nKeyDown )
return nil
#pragma BEGINDUMP
#include <windows.h>
#include <hbvm.h>
LRESULT CALLBACK KeyboardHookProc( int nCode, WPARAM wParam, LPARAM lParam )
{
if( nCode == HC_ACTION )
{
KBDLLHOOKSTRUCT * p = ( KBDLLHOOKSTRUCT * ) lParam;
if( wParam == WM_KEYDOWN && p->vkCode == VK_SNAPSHOT ) // Print Screen key on keydown
{
hb_vmPushSymbol( hb_dynsymSymbol( hb_dynsymFindName( "MYHBFUNC" ) ) );
hb_vmPushNil();
hb_vmPushInteger( VK_SNAPSHOT );
hb_vmDo( 1 );
return 1;
}
}
return CallNextHookEx( NULL, nCode, wParam, lParam );
}
HB_FUNC( DISABLEPRINTSCREEN )
{
HHOOK hHook = SetWindowsHookEx( WH_KEYBOARD_LL, KeyboardHookProc, NULL, 0 );
if( ! hHook )
MessageBox( 0, "can't hook", "warning", 0 );
}
#pragma ENDDUMP