In general, it is not a good programming practice to use a dialog as shown in this example but there are some circumstances when it is needed. This need most often comes up in dedicated systems, such as point-of-sale, industrial monitoring or other dedicated systems, where there may be multiple applications running but one needs all of the user's attention at a critical time. Be careful how you use this example. It would be easy to write a very bad user interface using this technique.
The example code given here isn't fool proof and won't be effective on a dual monitor system or in other situations/configurations. The dialog won't prevent the user from invoking and using Task Manager, if they have access to it, and users can use their Windows keyboard button to push the Windows taskbar back to the top if they have the option set to keep it on top of other windows. The Alt-Tab key can still be accessed although most applications can't be interacted with while the dialog is up. However, in spite of these limitations, this method can be effective way to get a user's attention on a critical task. Under normal conditions, you will want to have a system administrator setup policies so that non-local-administrative users can't easily bypass this critical dialog.
This pseudo system modal dialog works with two forms, a cover form and the actual dialog form. The real trick is in the cover form that it is Maximized, has it's TopMost property set to True, and its Opacity set to 10%. This form is used to cover up the other open windows on the system. The dialog form needs to also be shown TopMost as well and it also needs the cover form to always stay behind it. This is accomplished by showing this form using ShowDialog and disabling the cover form. I've also found it to be a good safety valve to have code in the cover form that always returns control to the dialog.
You can show the actual dialog as either a regular application modal dialog or you can use the overloaded ShowDialog method to diaplay it in system modal form. The code in the overload manages showing the cover form and the FormClosing event is used to hide the cover when the dialog is done.
The sample program, written in VS 2005 VB.NET is very simple and easy to follow with full XML comments. It demonstrates showing the dialog both ways. It also demos working with a timer to show the dialog so that you can see what happens when this application does not have focus.