This is a common problem in Outlook. You might have tried to override the Ribbon settings for Print in Outlook to find that your code never gets run when the user clicks Print.
There is also not any events in the Outlook object model to detect Print either. So if you need to detect the user pressing the print button, you are out of luck.
While it is still not possible to detect the print button being pressed, you can at least detect when the user has selected the Print tab on the backstage.
The following code uses a background thread and a series of Windows API calls to FindWindow/FindWindowEx to detect when the Print tab on the backstage is opened: