I think you should consider a slightly different approach: instead of using `cron` for a shutdown, use `cron` to display a message with `xmessage`.
Then, after the actions (if any) taken from `xmessage` events (buttons pressed or not), you initiate a shutdown.
In other words:
* at a certain time, display `xmessage` via `cron`
* if no action is taken (button pressed) after a certain time - shutdown
* if button **is** pressed, delay shutdown with whatever time.
I wrote something similar to your needs in **this thread**.