Richard Kain
I've actually created a fully functional 3D screensaver before. Of course, I did it using Irrlicht 3D and coded it in C++. It's actually quite challenging. Now, I'd imagine that doing it with C# and Games Studio Express would be a lot easier. I experimented with Visual C# express screensaver template, and it was very easy to work with. It would just be a matter of incorporating the general structure of a Game example with that of a C# screensaver. The most important matter is incorporating the arguments into the Main() function, as those arguments are absolutely essential for a screensaver to function properly. I don't actually think its necessary to detect mouse movement, I'm pretty sure Windows handles that itself automatically. And you have to program reactions for each of the different arguments.
For the condition of receiving the /c argument, you have to set your screensaver to pop up a WinForms window that will allow for any changes, or just to display credit information. If you don't set something up for this, nothing will happen when the user pushes the "settings" button on the screensaver tab. And that is unprofessional. A good screensaver has something happen when you hit settings. Even if its nothing more than a simple box with a "Close" button. Also, the /c argument has to use WinForms, you can't do it the same way games are handled. WinForms are event driven, while the Game template is loop/update driven. And the /c argument's nature makes WinForms a necessity.
The /p argument is a bit easier. For that, you can use the same code that you use for the screensaver proper, but just set it to run and render at a much lower resolution. If you want to save on loading time, you can change it up to use lower-resolution assets, or even just have it display a static preview image instead. The preview should give some idea as to what the full screensaver will be like, but it doesn't have to actually reproduce it at all. Whatever you find works best should be acceptable.
The /s argument is arguably the most important. This is where the actual screensaver is defined. This is where you are definitely going to want to implement the Game template. This argument is ideally suited to use the XNA framework. Now, its best not to accept user input for this section. Ideally, it would be best to set this to run in fullscreen, and leave the mouse pointer hidden. You can have it do anything you want it to, but it should be automatic. There are ways to disable the mouse movement trigger, and input your own for exiting the screensaver. But for a first effort, I would stick with the default Windows mouse movement exit.