Hi all,
Grab the latest windows-pr from CVS and try this program. It
works...once. Then the interpreter crashes. Why? And what can we do
about it?
The code is based on this:
http://msdn2.microsoft.com/en-us/library/ms685049(VS.85).aspx
require ''windows/console''
require ''windows/sound''
include Windows::Console
include Windows::Sound
CtrlHandler = Win32::API::Callback.new(''L'',
''I''){ |ctrl_type|
case ctrl_type
when CTRL_C_EVENT
puts "Ctrl-C event"
Beep(750, 300)
return true
when CTRL_CLOSE_EVENT
Beep(600, 200)
puts "Ctrl-Close event"
return true
when CTRL_BREAK_EVENT
Beep(900, 200)
puts "Ctrl-Break event"
return false
when CTRL_LOGOFF_EVENT
Beep(1000, 200)
puts "Ctrl-Logoff event"
return false
when CTRL_SHUTDOWN_EVENT
Beep(750, 500)
puts("Ctrl-Shutdown event")
return false
else
return false
end
}
if SetConsoleCtrlHandler(CtrlHandler, TRUE)
printf( "\nThe Control Handler is installed.\n" )
printf( "\n -- Now try pressing Ctrl+C or Ctrl+Break, or" )
printf( "\n try logging off or closing the console...\n" )
printf( "\n(...waiting in a loop for events...)\n\n" )
while true
end
else
printf( "\nERROR: Could not set control handler")
end
Thanks,
Dan